如何解决 CSV 乱码问题

接上篇说的符号乱码问题,还有一种情况下的乱码解决方法。

参考文献

 https://stackoverflow.com/questions/155097/microsoft-excel-mangles-diacritics-in-csv-files

这里导出的是CSV格式的文件,出现乱码,我们先要了解CSV格式

CSV 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。 CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是7-bitASCII是最基本的通用编码。

上述引用  https://blog.csdn.net/evilcry2012/article/details/53112858


我们主要关注是纯文本格式的,使用的字符编码没有被指定,所以当我们导出CSV,用EXCEL打开的时候,会出现乱码的原因是

为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头。这作为一个”特征符”或”字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序(big-endian或little-endian),具体的对应关系见下表。 

Bytes              Encoding       Form 

00 00 FE FF      UTF-32,         big-endian

 FF FE 00 00      UTF-32,         little-endian 

FE FF                 UTF-16,        big-endian 

FF FE                 UTF-16,       little-endian 

为了使我们能够正常打开无编码问题的CSV文件,我们需要为CSV文件指定BOM,正常转换识别编码


问题来了?如何在Rails里的CSV文件操作这点?
很简单,在生成的CSV文件头部直接添加BOM

例如:

csv << ["\xEF\xBB\xBF ID","Name","AGE"] ..


以上是我的总结想法,或许还有些不成熟,不妥之处,请指正,谢谢。

name: eric

email:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值