关于ANSI和UTF-8,windows和unix的行结束符

今天帮同事调个东西,发现他的一个配置文件(文本文件)不能正确的被我的程序解析,对比了一个可用的配置文件之后,也没发现什么特别大的差异,只是配置项的值不同。

但是我用beyond compare对比之后却发现两个重要的不同点:

首先假设他的文件叫做win_config.txt,可用的配置文件叫valid_config.txt。

1.win.txt的行尾结束符是0D 0A两个字符,也就是ascii码的\r \n,

而valid.txt的行尾结束符是0A一个字符,也就是ascii码的\n。

2.win.txt的字符编码格式是UTF-8的,valid.txt的字符编码格式是ANSI的。

 

使用notepad++这个软件,把win.txt的行结束符转换成UNIX格式的,也就是\n,再尝试,就可以被我的程序给解析了。

跟ANSI和UTF-8编码到没什么关系。

 

后来为了理解这是为什么,查了一些资料,总结一下。

在三大OS下,其环境下的行结束符是如下所示,所以当Unix OS的文本文档用Win OS来读取时,就会发生问题,所有的文字都在同一行。


OS     :十六进制 -> ascii码 -> 简称 -> 全称/中文名称

Mac  OS:0D       -> \r      -> CR   -> Carriage Return / 回车(符)

Unix OS:0A       -> \n      -> LF   -> Line Feed       / 换行(符)

Win  OS:0D 0A    -> \r\n    -> CR LF



 

你可能感兴趣的:(关于ANSI和UTF-8,windows和unix的行结束符)