我用的是繁體win2000,用TRXRichedit粘貼一些簡體網頁文字內容,沒有“?”出現,但用INSERT方法存入ACCESS表中,出現“?”,請幫忙解決。
  如何在繁體系統中把簡體網頁的ucicode文字轉換為繁體的big5碼。

解决方案 »

  1.   

    如果只考慮轉碼,不考慮繁簡寫法不同的話,可以用下列程式
    function Big5ToGB(sBig5: string): string;
    var ws: array[0..32767] of WideChar;
        s: array[0..65535] of char;
    begin
      ZeroMemory(@ws, Length(ws) * SizeOf(WideChar));
      ZeroMemory(@s, Length(s) * SizeOf(char));
      MultiByteToWideChar(950, MB_COMPOSITE, PChar(sBig5), -1, @ws, Length(ws));
      WideCharToMultiByte(936, WC_COMPOSITECHECK, @ws, -1, @s, Length(s), '?', PBOOL(false));
      result := s;
    end;
    简体操作系统下,
    对GB2312,把 MultiByteToWideChar 的第一個參數傳入 936,得到的不是UNICODE,而是GBK的简体
    同样,对Big5,传入950,得到的也是GBK的繁体,不是UNICODE,
    只有把结果再用UTF8Encode函数,转一下,才得到UNICODE(UTF8),
    你把结果放到一个htm文件,在IE里试试就知道了,套用不同的编码,看到不一样的乱码在简体系统,转成GBK的繁体,CharSet用Default就能显示“繁体”了,但由于这个“繁体”是BGK的“繁体”,拿到繁体操作系统(Big5)下,一样会是乱码