项目过程中, 经常用到用程序来处理Excel导出的csv格式的数据文件, 在处理这类文件的时候经常遇到乱码的情况, 今天下午花了点时间就这一点问题做了下总结.
首先说明一点, Excel导出的csv文件的默认编码格式是GB2312(我的Excel是2007版), 而且我也没找到它提供设置编码格式的地方, 而且有一点, 它不能读其它编码格式csv文件.
其次程序中我们要用到的csv文件需要是utf-8格式的, 因为它是平台无关的, 能够在windows, Mac, Linux, 及网络上正确地被解析显示.
解决方案一, 用Excel导出csv文件后,Windows下用
记事本(nodepad), (另存里面先编码格式)
emEditor,(双击右角角的那一块)
UltraEdit,(另存, 选编码格式)
jEdit, 转成utf-8格式
Mac系统下可以用
jEdit, (双击右下角那一块), 因为Mac下没有找到emEditor, 而UltraEdit又是收费的(个人感觉它的确值那几十美元), 把它转成utf-8格式的给程序用.
解决方案二, 用OpenOffice,(其它类似软件比如Mac特有的Numbers或许可以, 我没有试) 在Windows和Mac下我都试过, 它都给出了保存csv文件编码格式的选项, 当然它也能正确地读 utf-8格式的csv文件(开始的时候选一下). 方案一的话, 如果只想改一个数字的话, 那你得找到原excel文件, 改好, 导出一遍, 再改格式. 而用OpenOffice可以直接打开, 改一下, 保存.
再说另我一点. 存好的csv在Mac下可以选中后点击空格预览, 这里又会出现一个新问题. 点击空格后中文部分出现乱码. 但有的时候却又是好的. 用UE对比一下, 发现文件非乱码文件的最前面多出三个字节(EF BB BF), 查了下utf-8又分带签名(Mac下显示utf-8y), 和不带签名. 只有带签名的才可以正确预览.
同样上面这个问题, 可以用jEdit UE, emEditor转成想要的格式.
原创, 转载请注明!