一个系统在断电后磁盘出现问题,强制修复后,用vi编辑时总是出现一些烦人的提示,在打开vi时有一句:
ex/vi: Input encoding conversion not supported
在退出时也总是有一句:
Input encoding conversion not supported; test.txt: new file, UNLOCKED: line 1
这个错误在百度、bing上都没搜到,只好自已动手。
因为这是个字符编码的错误,所以就跟字符编码相关的文件有关。在FreeBSD中,字符编码都存放在/usr/share和/usr/local/share目录中,进入这两个目录,对照正常的机器,逐个目录进行du -d 1 -h,来判断一个文件目录是否正常。
果不出所料,/usr/share/i18n目录丢失,没找到这个目录,从正常的机器复制了一个,就不再提示“不能转换输入编码”的错误了。
那么在i18n目录下有什么呢?
# ls /usr/share/i18n/
csmapper esdb
有两个文件夹,一个是mapper顾名思义就是一个“映射”,联想到这是字符转换,可以去man一下iconv:
#man iconv:
……
SEE ALSO
mkcsmapper(1), mkesdb(1), iconv(3)
至此应该比较明白了,这两个目录就是为iconv准备的,csmapper就是一个字符间转换的对照表,esdb就是iconv的分类表,这两类文件都是二进制的,用vi打开不会看到有用的信息,但是随意逛的时候,在GB目录下却发现一个比较陌生的汉字编码:GB12345。
GB2312都知道,这个GB12345是何方神圣呢?直接问百科:
GB 12345,全称《信息交换用汉字编码字符集 辅助集》(英文:Code of Chinese ideogram set for information interchange supplementary set),也就是“第一辅助集”,简称 GB1,可以看成是GB2312的繁体版本,共收录6866个汉字,是中国为了适应繁体汉字信息处理而制定的标准。由于不能满足现实需求,所以也不被大多数电脑系统采用。
GB 12345 原称 GB/T 12345-90,于1990年发布,T 是“推荐”汉语拼音首字母。1993年改为强制性,改称 GB 12345。
原来是一个简繁体的转换标准,很少跟繁体字打交道,不知道也正常了。