我用DELPHI写了个小工具,显示的字符是中文简体,但是到了繁体的系统下就显示为乱码了,于是我测试把我的中文简体系统语言修改“中文(台湾)”、“中文(香港)”运行程序后一样是乱码,请问如何解决?我运行VC写的、易语言写的程序却不会乱码,为什么偏偏DELPHI写的程序在繁体系统下就会乱码?到底要怎么解决呢

解决方案 »

  1.   

    你直接用繁体来做exe,再试试。
      

  2.   

    DELPHI 2009以下版本不支持Unicode,你可以用以后的版本开发。
      

  3.   

    如果你的软件不是一个大工程,那么用2009或2010重写吧。如果不能重写就用控件。如楼上说的用TMS unicode控件包,也可以像楼主的朋友说的,在烦体系统里编译一次。
      

  4.   

    用内码转化程序,1。先判断运行环境是简体还是繁体,2。如果是繁体,在oncreate事件中,遍历所有控件,运用内码转化程序把简体转成繁体,我认为是蛮方便的,^_^
      

  5.   

    说在繁体系统编译一次的肯定没用过这个方法,否则就不会这样说了。
    如果在繁体系统里面用delphi打开包含简体中文的源代码,那么,这个时候所有的控件的caption/Text/Tstring的字符已经是乱码,编译出来的结果还是乱码。
    --------
    解决方法:
    1.如上所说用D2009/D2010编译你的程序;
    2.在程序界面不用中文,只用英文,然后再添加多语言支持模块;
    3.涉及数据库用utf8读写。
      

  6.   

    在你的主DPR中加入以下这段:  if (GetThreadLocale <> $0804) then {//取得当前线程的地方ID} begin
        SetThreadLocale($0804); //设置当前进程的语言为中文
      end;
      

  7.   

    对于那些提示信息,你可以先判断是简体还是繁体,如果是繁体就进行转换成繁体系统能认到的繁体字,如果是界面的字体,除了用六楼的方法外,你也可以直接打繁体字进去。或都可以判断当是繁体系统时,就将控件字体的charset设为chinesbig5_charset.
      

  8.   

    在你工程文件Application.Initialize; 下面添一行:
    SetThreadLocale(DWORD(Word(SORT_DEFAULT) shl 16) or
          DWORD(Word(SUBLANG_CHINESE_SIMPLIFIED) shl 10) or
          DWORD(Word(LANG_CHINESE)));引用一下windows 单元