1. 为什么我用MultiByteToWideChar转换韩文字,最后转出来的都是问号呢(试过把结果赋值给tnt组件,也显示问号)? 不知道是不是MultiByteToWideChar没写对,不知道哪位能给个能正确转换韩文的例子吗?2. 如何判断输入的一个字是在哪个代码页上的呢?

解决方案 »

  1.   

    问题二:Unicode的编码中相同的代码页的编码基本上都是连续排放的,比如中文字符就是在2个连续的区域中,这两个连续的区域内的中文就是unicode代码页,也是所有其它的中文代码页。如果要分出gb2312和big5什么的,就得自己做代码页区分表了。但是有许多中文字符是属于所有中文代码页的,比如“一”、“二”、“三”,如果只给一个这样中文字符,只能判断出它是unicde代码页。
      

  2.   

    看来是代码页的问题874 Thai
    932 Japan
    936 Chinese (PRC, Singapore)
    949 Korean
    950 Chinese (Taiwan; Hong Kong SAR, PRC)
    1200 Unicode (BMP of ISO 10646)
    1250 Windows 3.1 Eastern European
    1251 Windows 3.1 Cyrillic
    1252 Windows 3.1 Latin 1 (US, Western Europe)
    1253 Windows 3.1 Greek
    1254 Windows 3.1 Turkish
    1255 Hebrew
    1256 Arabic
    1257 Baltic
      

  3.   

    在处理过程中,不要用string来保存与操作系统不兼容的文字。不兼容的文字会被转成"?"。
      

  4.   

    可是我用widestring来保存MultiByteToWideChar转换的结果也会编程"?",是不是在转换的时候就成"?"了呢? 有没有解决方法呢?上网找过好像比较少这方面的资料,麻烦大家了 m(_ _)m
      

  5.   

    Delphi支持widestring,但是在debug调试的时候是不支持widestring的(只支持与默认代码页相同的widestring)。下面的网址是维基百科,里面有unicode码表的详细结构!
    http://zh.wikipedia.org/wiki/Unicode
      

  6.   

    已经想到办法解决了,但是还有一个较简单的问题不大懂,解决后结贴:如果:
    s = '我们大家'; 它的十六进制表示实际是"AB D2 DE 43 3E 6C 2E 90", 那么我怎样才能获得s这个字符串的十六进制编码呢?