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

本文讲述了在解析配置文件过程中遇到的问题及解决办法。主要问题是由于不同操作系统行结束符和字符编码格式的不同导致的。通过将配置文件的行结束符转换为UNIX格式解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

但是我用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



 

转载于:https://my.oschina.net/michaelyuanyuan/blog/79152

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值