在第一次为公司的客户端软件定制日语版本的时候,由于软件开发是非Unicode版本的,发现当加载日语后,无论是在中文操作系统还是在日语操作系统下,软件界面上的大部分日语显示的都是乱码。在上网查看了相关的知识文档和案例,结合目前我们软件的开发环境和具体的代码实现,找到了两种解决办法。
第一种:
就是将整个软件工程变为Unicode编码格式。虽然这种方法能从根本上实现软件的国际化多语言版本。但修改起来工作量相当的庞大。例如:整个软件源码中以前采用只支持ANSI编码的字符串操作函数(如strcpy(),strlen())都要改为支持Unicode的(如wcscpy(),wcslen()),或者换成ANSI和Unicode通用的字符串操作函数。
第二种:
就是具体问题具体分析。就目前出现的乱码情况来看。主要是重载、自绘的控件出现了日语的乱码。其解决办法是首先对需要输出的字符串进行编码格式的转换,然后将字符串输出函数换为后缀为W的(即支持宽字符集的)字符串输出函数。
问题分析:
非 UNICODE 程序在不同语言环境间移植时的乱码
非 UNICODE 程序中的字符串,都是以某种 ANSI 编码形式存在的。如果程序运行时的语言环境与开发时的语言环境不同,将会导致 ANSI 字符串的显示失败。
比如,在日文环境下开发的非 UNICODE 的日文程序界面,拿到中文环境下运行时,界面上将显示乱码。如果这个日文程序界面改为采用 UNICODE 来记录字符串,那么当在中文环境下运行时,界面上将可以显示正常的日文。同样,对在中文环境下开发的非 UNICODE 程序同样存在此问题。
解决办法