近来由于项目的需要,需要看一下Windows上的编码转换情况,本打算自己写个小程序来测以下,结果google了半天也没有发现好的例子,只是有WideCharToMultiByte, MultiByteToWideChar的API,鉴于已经 n 年没有写Windows的程序了(怎么编译都忘了),而且时间也不充足,所以还是想偷懒找个现成的工具。于是首先想到了功能极为强大的 UltraEdit, 结果UltraEdit果然没有让我失望,它提供了任意 code page 和 Unicode, UTF-8 之间的转换,而且不用修改系统的 code page. 下面简单介绍一下.(UltraEdit可以从http://www.ultraedit.com/免费下载试用45天,目前的最新版本是 v13.00a)
- 试用 UltraEdit 人以打开一个文本文件,可以不用关心其编码.(Notepad创建的文件的默认编码还是当前code page设定的编码,在简体中文环境下是 CP936, 即 GBK)
- 设定 UltraEdit 当前的 code page: 选择 "View -> Set Code Page", 然后选择你需要的code page. 这样后面执行的编码转换操作都是根据这里设定的 code page 进行的.
- 选择 "Edit -> Hex Function -> Hex Edit" 进入Hex编辑模式,这样你可以输入任意你需要的16进制数字,例如 4E02(Unicode) 或者 8140(GBK) ( "丂" )
- 转换: 根据你当前的文件的编码,选择 "File -> Conversions -> Unicode to ASCII" 或者 "File -> Conversions -> ASCII to Unicode", 这里的ASCII就是便是当前的 Code Page便是的编码。
有一点需要注意:如何显示转换的结果?
- 首先需要适当的字体,例如如果你的Windows是简体中文,而你想要转换 Unicode -> Big5,那么你需要 Big5 字体。从http://www.unifont.org/可以下载到很多字体。
- 即使有了合适的字体也不一定能正确的显示。我将我的系统 code page 设定成 CP950(Big5), 重起后将 UltraEdit 的 Code Page 设定成 CP936,然后转换 GBK <-> Unicode,结果是能够显示 Unicode编码的简体中文字符,而不能显示 GBK 编码的中文字符。估计可能是和字体的处理有关,字体处理如果和当前的 code page 有关的话,这种设定的不一致就会造成无法正确显示。不过在系统code page 是 CP936的情况下在选择了正确的字体后能显示繁体Big5-HKSCS的字符。
- 从 http://www.microsoft.com/globaldev/reference/WinCP.mspx 可以看到不同 Code Page 的编码转换表。
来源:oschina
链接:https://my.oschina.net/u/169988/blog/174158