关于在 简体 系统下 开发 使用 BIG5 编码系统  的程序 的问题!!!!!!!!!!!!例如:
在设计时,在属性编辑器上label1控件的 caption 属性 输入了 一个 BIG5 的 字符串, 然后将 font 属性下的 charset  设为 CHINESEBIG5_CHARSET
,这时可以看到 正常显示字体。但编译后,放到 BIG5 编码的系统  运行 时,label1的文字出现乱码上!!! 这是什么原因??如果用 代码对  label1控件的 caption 属性 进行赋值个 BIG5 的 字符串,这样就可以正常显示! 

解决方案 »

  1.   

    因为Dephi当中的Form资源是以Unicode存储的,而在存入时是以当前系统的编码(简体环境为GBK编码)转换的Unicode存入,等到取出时则以转换成了当前系统编码(繁体环境为Big5编码),故而成了乱码。
    举个例说吧:
    '我'
    GBK编码:#206#210($CE$D2,双字节,以字节为单位)
    BIG5编码:#167#218($A7$DA,双字节,以字节为单位)
    Unicode编码:#25105($6211,双字节,以字为单位,在默认转换下不论简繁体环境为'我')而当在简体系统当中Delphi开发环境下往某个控件输入'我'字编码($CE$D2),系统使用当前字符集编码会在.dfm资源流文件当中转换成其相应的Unicode编码(#25105),同理当你在里面输入BIG5[$A7$DA]后由于系统并不知道你需要的是什么内容,所以它也会自作聪明地按当前系统字符集编码转换,从面存入Unicode编码为#1080($438),那么当然也就不会是开发人员本来所需要的编码了,故而显示为乱码。当然若你成简体下输入的是简体的'我'字,那么你虽然在开发环境下看到的是乱码,但是你到了繁体环境下却又能正常显示,前提是该文字存在于繁体字库当中。
      

  2.   

    楼主的解决方法可以有两种,一种在存入时使用gbk繁体编码(只能适应繁体系统),另一种是直接将编码文字写在程序当中,或者存到文件当中。第三种,不建议楼主使用,就是修改控件,也就是基本上每个可视控件都会有一次以上从dfm资源当中读取相关属性值的过程,从而修改该过程,在做编码转换时替代一种新的转换方式。
    注:
       该问题目前偶只发现在Delphi6及以上版本存在,低版本的没有测试过,不蛮清楚,CBuilder目前的版本不存在该问题
      

  3.   

    在沒看到我的回答前請樓主不要給分呀!!
    1、不要更改字符集的屬性,用 Default就可以。
    2、選擇一個繁體輸入法,如念青五筆(newhua.com有下載),輸入各種屬性值就可了
    記住:千萬不要用簡體輸入法輸入漢字

    這可是我的經驗,一般人我不告訴他!  ^_^
      

  4.   

    1.你指什么用 Default ??  是 font.name 属性吗  ???  我是用 全部用 Default 也不行2. 你指的繁体输入法是 big5 码繁体  还是 gbk 繁体????
      

  5.   

    还有你用什么 什么版 delphi ?? 什么系统???
      

  6.   

    这个:)
    正好最近在研究这个,你可以先用简体开发,然后再用一个Big5ToGb的函数给转一下,不就搞定了多语言版了:)))))))))))),就过就是写起来可能要麻烦一些
      

  7.   

    最后还是把所有的中文放在INI文件中读取,这样就更简单了
      

  8.   

    你新建一個窗體後,會發現窗體的font.charset是default.
    什麼都不要改動,直接用繁體輸入法輸入各種屬性就是.
        我以前是用念青繁體輸入法. http://crc.onlinedown.net/soft/4648.htm 有下載
    不過要注意的是,有各別漢字可能在繁體下面是顯示” ? “, 比如”為”,”產”,像這個問題的解決方法有:
    1、用word轉為繁體;
    2、換用其它繁體輸入法
    3、在網站上或其它地方copy一個字
    好了,祝你成功!
    另外,我首先說到的問你給我多少分是和你開玩笑的,當時我在忙於幫同事安裝系統,後來就下班了。熱心為同網友解決問題是csdn人的光榮和義務!你和我都一樣!另外嘛,像你這種急問題要捨得些,給20分實在讓人沒味口。我也是看到平時csdn人熱心幫我才算了,不計較了,呵呵!
      

  9.   

    有事沒事,去我的個人網站看看.
    http://www.tanyong.com