为什么Excel打开csv经常乱码 您所在的位置:网站首页 csv转为xlsx为什么会乱码 为什么Excel打开csv经常乱码

为什么Excel打开csv经常乱码

2023-05-13 08:55| 来源: 网络整理| 查看: 265

utf8文件头

Excel 在读取 csv 的时候是通过读取文件头上的 bom 来识别编码的,这导致如果我们生成 csv 文件的平台输出无 bom 头编码的 csv 文件(例如 utf-8 ,在标准中默认是可以没有 bom 头的),Excel 只能自动按照默认编码读取,不一致就会出现乱码问题了。

对于 utf-8 编码,unicode 标准中是没有 bom 定义的,微软在自己的 utf-8 格式的文本文件之前加上了EF BB BF三个字节作为识别此编码的 bom 头,这也解释了为啥大部分乱码都是 utf-8 编码导致的原因

对于golang里的写法:

file.Write([]byte{0xEF, 0xBB, 0xBF}) 复制代码 vim操作 :%!xxd "以16进制模式打开文件 :%!xxd -r "将以16进制格式打开的文件返回文本模式编辑 :set bomb 加上BOM标记 :set nobomb 去掉BOM标记 :set bomb? 查询当前UTF-8编码的文件是否有BOM标记 复制代码 添加Bom标记前 0000000: 6b65 7977 6f72 642c 6372 6174 2c74 6f74 keyword,crat,tot 0000010: 616c 0a42 474d 2c32 3032 322d 3130 2d31 al.BGM,2022-10-1 0000020: 3754 3030 3a33 313a 3233 2e30 3030 5a2c 7T00:31:23.000Z, 0000030: 3134 0a69 7373 2c32 3032 322d 3130 2d31 14.iss,2022-10-1 0000040: 3754 3030 3a33 343a 3433 2e30 3030 5a2c 7T00:34:43.000Z, 0000050: 3231 0a77 6172 2072 6f6f 6d2c 3230 3232 21.war room,2022 0000060: 2d31 302d 3137 5430 323a 3431 3a33 312e -10-17T02:41:31. 复制代码 添加Bom标记后 0000000: efbb bf6b 6579 776f 7264 2c63 7261 742c ...keyword,crat, 0000010: 746f 7461 6c0a 4247 4d2c 3230 3232 2d31 total.BGM,2022-1 0000020: 302d 3137 5430 303a 3331 3a32 332e 3030 0-17T00:31:23.00 0000030: 305a 2c31 340a 6973 732c 3230 3232 2d31 0Z,14.iss,2022-1 0000040: 302d 3137 5430 303a 3334 3a34 332e 3030 0-17T00:34:43.00 0000050: 305a 2c32 310a 7761 7220 726f 6f6d 2c32 0Z,21.war room,2 0000060: 3032 322d 3130 2d31 3754 3032 3a34 313a 022-10-17T02:41: 复制代码 编码的一些操作 在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式 :set fileencoding=utf-8 enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下 enconv -L zh_CN -x UTF-8 filename iconv 转换,iconv的命令格式如下: iconv -f encoding -t encoding inputfile 比如将一个UTF-8 编码的文件转换成GBK编码 iconv -f GBK -t UTF-8 file1 -o file2 #查看文件编码file命令 file ip.txt ip.txt: UTF-8 Unicode text, with escape sequences 复制代码


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有