Java 配置文件在Windows服务器上没有换行且中文乱码的问题

Posted 王希知

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 配置文件在Windows服务器上没有换行且中文乱码的问题相关的知识,希望对你有一定的参考价值。

Java 配置文件在Windows服务器上没有换行且中文乱码的问题

问题

公司的一个老系统部署在一台系统为window server 2008 r2 的服务器上的,前几天改了一下系统的配置文件去服务器上部署,结果发现配置文件打开后中文是乱码的,而且没有换行,全部都跑到一行去了。

分析解决

首先将这些有问题的配置文件从服务器复制到本地电脑上查看,发现都没有问题,显示也是正常有换行的,然后我想是不是因为服务器比较老旧,不能解析这个配置文件,于是用文本编辑器对配置文件的每个字符进行查看对比,结果发现这个配置文件的行尾换行符都是使用的LF换行,window一般都是使用CRLF换行,于是将换行符都改成CRLF换行后再放到服务器上查看就显示正常了。

至于乱码问题,发现是因为IDEA的这个配置选项导致的,这个配置选项会将配置文件中的非ASCII字符转换为ASCII字符,比如配置文件中有一个“中”字,那么IDEA会自动以\\u4e2d字符存储,所以在文本编辑器上打开就是以Unicode编码形式显示的了。

git core.autocrlf配置 解决Windows和Linux(Mac)换行问题

格式化

格式化是许多开发人员在协作时,特别是在跨平台情况下,遇到的令人头疼的细小问题。 由于编辑器的不同或者Windows程序员在跨平台项目中的文件行尾加入了回车换行符, 一些细微的空格变化会不经意地进入大家合作的工作或提交的补丁中。不用怕,Git的一些配置选项会帮助你解决这些问题。

core.autocrlf

假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾 结束符问题。 这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。 虽然这是小问题,但它会极大地扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能, 如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:

$ git config --global core.autocrlf true

Linux或Mac系统使用LF作为行结束符,因此你不想Git在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正, 把core.autocrlf设置成input来告诉Git在提交时把CRLF转换成LF,签出时不转换:

$ git config --global core.autocrlf input

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:

$ git config --global core.autocrlf false

转自 http://www.qinbin.me/git-core-autocrlf%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E/

以上是关于Java 配置文件在Windows服务器上没有换行且中文乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章

Windows / Java中的反向换行

git core.autocrlf配置 解决Windows和Linux(Mac)换行问题

如何从Java中的文件中删除换行符?

Java编程中的换行

csv用txt打开换行没了

有关Java 文件读取中换行的问题