记一次Java生成SQL脚本文件换行格式为window/unix的笔记

今天在做一个SQL脚本文件生成需求,其中,需要设置:

  • 文件编码为:UTF-8
  • 文件换行格式为:UNIX

UTF-8这个好说,因为java代码可以指定文件编码,如:

 但是Unix换行格式就很神奇了,情况如下:

注:我们是前后端分离项目,前端使用的是文本域编写SQL内容,然后传递到后端存储

  • 当在SQL文本域中输入几十或上百行的SQL代码时,生成SQL文件的换行格式为Unix
  • 当在SQL文本域中输入一行SQL代码时,生成SQL文件的换行格式为window
  • java代码也无法指定换行格式

(其实对于SQL脚本文件,是不可能出现单行SQL的场景)

后面了解了下“文件换行格式”,才知道出现上面的原因:

首先:要知道window和Unix对于文件换行格式的区别

缩写 ASCⅡ转义 系统 ASCⅡ值
CR \r MacIntosh(早期的Mac) 13
LF \n Unix/Linux/Mac OS X 10
CR LF \r\n Windows
  • window:支持\r\n
  • unix:仅至此\n

原因

        我们在文本域中的存在多行内容,在转为json时,会自动变为“\n”,不会存在\r,因此,java在生成SQL文件时,默认文件换行格式为Unix、

        当文本域只有一行内容时,不存在换行,java默认换行格式为window

猜你喜欢

转载自blog.csdn.net/weixin_42675423/article/details/131020961