• Delphi 简体 繁体 转换


    http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=104986

    試看看
    這個是豬寶寶從網路上抄來的
    
    檢視純文字版列印?
    function Cn2Big(CnStr: string): string;  
    var  
      Len: Integer;  
    begin  
      Len := Length(CnStr);  
      SetLength(Result, Len);  
      LCMapString(GetUserDefaultLCID, LCMAP_TRADITIONAL_CHINESE, PChar(CnStr), Len, PChar(Result), Len);  
    end;  
      
    function BIG2cn(bigStr: string): string;  
    var  
      Len: Integer;  
    begin  
      Len := Length(bigStr);  
      SetLength(Result, Len);  
      LCMapString(GetUserDefaultLCID, LCMAP_SIMPLIFIED_CHINESE, PChar(bigStr), Len, PChar(Result), Len);  
    end;  
      
    procedure TForm1.Button1Click(Sender: TObject);  
    begin  
    edit2.Text:=CN2BIG(EDIT1.Text);  
    end;  
      
    procedure TForm1.Button2Click(Sender: TObject);  
    begin  
    edit2.Text:=big2cn(EDIT1.Text);  
    end;  
    
    
    
    ===================引 用 h@visli 文 章===================
     各位新春快樂!
    
    我有一份Unicode編碼的文本文檔,裏面大部分內容為繁體中文,其它為英文字符,需要將裏面的繁體中文內容轉為簡體中文Unicode內容,請問在Delphi XE下應該如何實現?
    aftcast
    站務副站長
    
    
    
    發表:80
    回覆:1421
    積分:1705
    註冊:2002-11-21
    
    發送簡訊給我
        
     #3     發表時間:2013-02-18 18:29:59   IP:114.32.xxx.xxx 訂閱 
    hello,
    
    必需要警告豬寶寶上面貼的程式碼僅在以下情形是正確的:
    1/ os本身是簡體的,而無論delphi是哪版 (d5以後應該都對)
    OS 本身是简体,的而无论Delphi是哪个版本,D5以后应该都对。
    2/ 若os是我們繁體的,那麼上面的碼僅delphi2009以上的版本才會正確。若2009以前的話,就錯!
    若OS是我们繁体的,那么上面的代码仅在Delphi2009以上的版本才会正确。若2009以前的话,就错! 若要正統的表達函式的用意,那 Cn2Big 或 Big2Cn的命名不正確。應該把 Cn2Big 改成 chs2cht (簡字體轉繁字體,必需強調的是…它與編碼轉換無關,也就是說都是在同一個編碼上換字而已)
    简字体转繁字体,必须强调的是,他与编码转换无关,也就是说是在同一个编码上换字而已。 Big2Cn 改成 cht2chs 因為,在上述所講的
    1 的情形下,且delphi是2009前,雖然"看起來"字是對的,但其實轉來轉去都是GBK編碼,非big5。
    因为,在上述1的情形下,且Delphi是2009前,虽然看起来字是对的,但是其实转来转去都是GBK编码,并非BIG5。
    而1的情形下,但delphi是2009以後,那麼情形與情形2是同樣的! 而1的情形下,但Delphi是2009以后,那么情形与情形2是同样的!
    而上述2的情形下,其實是因為d2009後的字串是unicode,故LCMapString這個api會呼叫到LCMapStringW這個unicode版,於是變成簡"字型"unicode轉"繁"字型unicode。 而上述2的情形下,其实是因为d2009后的字串是Unicode,故
    LCMapString这个API会调用到LCMapStringW这个Unicode版,于是变成简字形Unicode转繁字形Unicode。

    若真的要把big5轉簡體,或是簡體轉big,那就沒那麼簡單。詳可見我的blog: http://aftcast.pixnet.net/blog/post/22191609  此外,近期我可能會和qcom討論是否可以開個unicode的深入課程,最快3月多。但時候還請大家來聽並指教! :)

    若真的要把BIG5转简体,或是简体转BIG5,那就没那么简单。

    GBK,BIG5,UNICODE,都是字符编码叫法

    简体,繁体,是汉字的不同形式叫法。同一种编码里,存在这1个字的简体和繁体。

  • 相关阅读:
    0421 & SX2016
    HDU3948 & 回文树模板
    BZOJ 2152 & 点分治
    HDU5618 & CDQ分治
    CC countari & 分块+FFT
    ECF R9(632E) & FFT
    ECF R9(632E) & DP
    BZOJ的两道osu概率DP easy与osu
    BZOJ3197 & 组合乱搞
    转载 Rational Rose 的配置和破解
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4619669.html
Copyright © 2020-2023  润新知