哈哈,估计人家就是在Windows上随便用输入法写了个注释
“不正常”字符在十六进制下显示成什么?
我猜可能是某些情况下删除“半个字”导致的:
# 准备一个可以正常转换的 gbk 文件
⋊> iconv -f gbk -t utf-8 ~/Downloads/test.gbk
中文
# vi 没有设置 encoding,看到的是乱码,然后随便删除了一个字符,保存
⋊> vi ~/Downloads/test.gbk
# 转换出错
⋊> iconv -f gbk -t utf-8 ~/Downloads/test.gbk
形
iconv: ~/Downloads/test.gbk:1:2: cannot convert
但是比较删除前后的十六进制(在视觉上)并没有明显区别:
# 删除之前:
⋊> hexdump -C ~/Downloads/test.gbk
00000000 d6 d0 ce c4 0a |.....|
00000005
# 删除之后:
⋊> hexdump -C ~/Downloads/test.gbk
00000000 d0 ce c4 0a |....|
00000004
肉眼看上去,这个字符是个-
,字符前后都是空格,likesome text - some text
。
十六进制下这个字符是 0xa8 0x43,替换为英文半角的字符后变为 0x2d。其中0xa8的位置大概是这个文件的第5000多个字节
并不是说删了半个字符,感觉是把一个全交的字符改成了半角。
文件分享的话还真是不好意思了,这个是公司的文件,不能拿出来
全角半角啥的应该不影响 gbk 转到 utf8
这个可能是我之前操作有误。。。我又重新试了一下还是可以转的。。。好尴尬。。
Hmm… ノ ̄□ ̄)ノ ~┻━┻ 掀桌子
开个玩笑,问题解决掉就好。