CnPack Forum » CnVCL 组件包 » 周劲羽(zjy),那CnDfm6To5在繁体系统下使用有问题


2009-8-2 17:47 gzhubin
周劲羽(zjy),那CnDfm6To5在繁体系统下使用有问题

就是在繁体下使用此工具,当窗体是简体时,则转换后在繁体中不能将是GB的汉字正确转换为GB汉字(乱码我知,正确的结果也是乱码,但因该是GB汉字的乱码,而非现在的BIG的一堆乱码)

2009-8-2 17:56 gzhubin
简体下使用”DFM 窗体转换工具“来转换简体窗体没问题。在繁体下使用内码转换工具(ConvertZ V8.02 繁简转换),可以将GB汉字转换为BIG汉字,但要是在繁体下使用”DFM 窗体转换工具“来直接转换简体窗体就有问题,再将转换后的窗体,想进行代码的内码转换(ConvertZ V8.02 繁简转换),就什么也不是了。

2009-8-3 09:32 zjy
原因应该是这样的:

Delphi6 以后的 DFM 里汉字是按 Unicode 编码来保存的,而 DFM转换工具 是调用 Delphi 本身的窗体流处理函数来进行转换。当在繁体系统中转换简体窗体时,Unicode => ANSI 的转换会按照系统的代码页来执行,这样DFM中的简体 Unicode 编码文字应该会自动转成 BIG5 编码的中文,如果简体字在 BIG5 中没有对应的编码,可能就会出乱码了。

解决的办法,可以试试:
1、只在简体系统中转换简体的 DFM
2、在繁体系统下用 applocale 工具指定使用 GBK 编码来执行 DFM转换工具 再来转换
3、将繁体系统的非 Unicode 应用程序默认代码页改成 GBK 再执行 DFM转换工具

2009-8-4 02:05 gzhubin
嗯,我现在也是在简体系统中转换简体的 DFM,然后,再切换至繁体系统中再将DFM进行繁简转换。

谢谢两位了:lol: 。

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.