我公司用的是英文版的WinXP。用delphifans下载的Delphi 7 Lite Full Edition做项目。装了cnWizards后窗体中的中文都变了乱码。禁用cnWizards恢复正常。把编译出来的程序拷到客户的WinXP中运行,中文也显示乱码。如果启用cnWinzards,再输入中文,编译出来的程序在我的机器显示乱码,在用户机器显示正常。后发现启用cnWizards后dfm文件中的中文用双字节保存,如“中文”保存为#20013#25991;禁用cnWizards后中文用单字节保存,如“中文”保存为#214#208#206#196。客户和我的机器在控制面板->Regional and Language Options->Advanced->Language for non-Unicode programs 都设成是Chinese(PRC)也不行。后来发现用户的Regional and Language Options中的Standards and formats是Chinese(PRC),改成和我的机器一样的English(United States),再运行程序,显示正常。
再进一步测试,发现如果我的机器的Standards and formats设成Chinese(PRC)则Delphi在dfm中用双字节保存中文,如果是English(United States)则用单字节保存。如果启用cnWizards则不管设成什么都使用双字节保存中文,编译出来的程序要在Standards and formats改成Chinese(PRC)的后才能正常显示中文。
网上搜到一些解决办法是改用户,如
http://jim19770812.blogspot.com/2009/03/delphi7-dfm.html
http://liaoxuewei1980.spaces.live.com/blog/cns!C8D670F8C5F22B6B!181.entry
估计都是恢复了默认的Standards and formats。