C文件中的中文注释引起不能自动补全

哈哈,估计人家就是在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多个字节

感觉不太可能说,删了半个字符编辑器里面还显示一切正常。

@deep 方便把文件分享出来大伙看看么?

并不是说删了半个字符,感觉是把一个全交的字符改成了半角。

文件分享的话还真是不好意思了,这个是公司的文件,不能拿出来

全角半角啥的应该不影响 gbk 转到 utf8

这个可能是我之前操作有误。。。我又重新试了一下还是可以转的。。。好尴尬。。

Hmm… ノ ̄□ ̄)ノ ~┻━┻ 掀桌子



开个玩笑,问题解决掉就好。