新手问题 ruby 转码问题,如何把一个 GBK 编码格式的乱码正确的读出来

Lonely_waiting · 2019年01月30日 · 最后由 Lonely_waiting 回复于 2019年01月31日 · 2557 次阅读

"dns-²âÊÔ×"这是一个 GBK 格式乱码,但是我用读文件的方式读出来之后转换不出来。代码如下 怎么解决,求大神指点

先判断终端显示用的是 gbk 还是 utf-8,一般 windows 的 cmd 是 gbk 的。再判断文件的内容是 gbk 还是 utf8,打印输出时,转换成终端显示的编码就 OK。

sevk 回复

不是显示问题,用 iconv 会转换会报错,无法识别序列,是不是这个乱码有问题,我转换正常的 GBK 都是可以转化的

你确定这是一个正常的 gbk 字符么?用编辑器以 gbk 编码打开 aa.log 这个文件看看呢

试试开档时设定编码 这样读档问题较小 如果要算 bytesize "string".bytesize

File.open('aa.log',encoding: 'GBK').each   {|line|     puts line,line.enocde('utf-8') }

File.foreach('aa.log',encoding: 'GBK') {|line|  puts line}
Lonely_waiting 回复

你用 "ASCII-8BIT" 打开文件,把包含中文的前 20 个字节发上来看看。 line.force_encoding("ASCII-8BIT") 也行。

额额 搞定了,感谢各位大神,原文件出了一点错误,一个#出现了乱码导致解不出来。

Lonely_waiting 关闭了讨论。 01月31日 09:37
需要 登录 后方可回复, 如果你还没有账号请 注册新账号