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

Lonely_waiting · January 30, 2019 · Last by Lonely_waiting replied at January 31, 2019 · 2526 hits

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

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

Reply to 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}

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

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

Lonely_waiting closed this topic. 31 Jan 09:37
You need to Sign in before reply, if you don't have an account, please Sign up first.