最近在用ArcView GIS的shape2kml插件将shp文件导出Google Earth的kml文件时,发现得到的文件里面中文都被表示成了Ä®ºÓÏØ这种~~ 看上去像是unicode编码,但整数部分只有3位,汉字通常应该是5位才对。
费了很大力气从源文件中找到了对应的中文,发现这段“编码”对应汉字“漠河县”。于是做了个试验,如下:
1- 打开记事本,输入汉字“漠河县”,保存成ANSI格式。
2- 再用UltraEdit32打开上面的文件,并“切换十六进制模式”,我们可以看见它们的编码是:
C4 AE BA D3 CF D8
而这时上面的每个字节对应的十进制整数恰好是:
C4 AE BA D3 CF D8
196 174 186 211 207 216
现在大致知道是怎么回事了,原来那个插件支持的编码方式为单字节的ASCII格式,当遇到第一个bit为1的时候,就将这个字节作为unicode编码表示,而正确的做法应该是取两个字节转换为ANSI格式~ 如下:
C4AE BAD3 CFD8
漠 河 县
最后,我们只要编个小程序提取然后转换一下就可以了。
费了很大力气从源文件中找到了对应的中文,发现这段“编码”对应汉字“漠河县”。于是做了个试验,如下:
1- 打开记事本,输入汉字“漠河县”,保存成ANSI格式。
2- 再用UltraEdit32打开上面的文件,并“切换十六进制模式”,我们可以看见它们的编码是:
C4 AE BA D3 CF D8
而这时上面的每个字节对应的十进制整数恰好是:
C4 AE BA D3 CF D8
196 174 186 211 207 216
现在大致知道是怎么回事了,原来那个插件支持的编码方式为单字节的ASCII格式,当遇到第一个bit为1的时候,就将这个字节作为unicode编码表示,而正确的做法应该是取两个字节转换为ANSI格式~ 如下:
C4AE BAD3 CFD8
漠 河 县
最后,我们只要编个小程序提取然后转换一下就可以了。