CnPack Forum


 
Subject: 周劲羽(zjy),那CnDfm6To5在繁体系统下使用有问题
gzhubin (Skywin)
普通灌水员
Rank: 2



UID 41851
Digest Posts 0
Credits 57
Posts 22
点点分 57
Reading Access 10
Registered 2009-2-23
Location 广州
Status Offline
Post at 2009-8-2 17:47  Profile | Site | Blog | P.M.  | QQ
周劲羽(zjy),那CnDfm6To5在繁体系统下使用有问题

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



UID 41851
Digest Posts 0
Credits 57
Posts 22
点点分 57
Reading Access 10
Registered 2009-2-23
Location 广州
Status Offline
Post at 2009-8-2 17:56  Profile | Site | Blog | P.M.  | QQ
简体下使用”DFM 窗体转换工具“来转换简体窗体没问题。在繁体下使用内码转换工具(ConvertZ V8.02 繁简转换),可以将GB汉字转换为BIG汉字,但要是在繁体下使用”DFM 窗体转换工具“来直接转换简体窗体就有问题,再将转换后的窗体,想进行代码的内码转换(ConvertZ V8.02 繁简转换),就什么也不是了。
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2009-8-3 09:32  Profile | Site | Blog | P.M. 
原因应该是这样的:

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

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




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
gzhubin (Skywin)
普通灌水员
Rank: 2



UID 41851
Digest Posts 0
Credits 57
Posts 22
点点分 57
Reading Access 10
Registered 2009-2-23
Location 广州
Status Offline
Post at 2009-8-4 02:05  Profile | Site | Blog | P.M.  | QQ
嗯,我现在也是在简体系统中转换简体的 DFM,然后,再切换至繁体系统中再将DFM进行繁简转换。

谢谢两位了
Top
 




All times are GMT++8, the time now is 2024-3-29 07:20

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.005582 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP