2008-10-20 35 views

回答

6

在Windows有试图显示Unicode字符时发生的2个共同显示问题:

  1. 文本有时会出现为问号

    • 时Unicode数据被转换为一个8时发生此通常通过系统代码页(但其他代码页可以在转换调用中指定)编码字符集(或技术上的多字节字符)。如果目标8位字符集不包含所需的字符,则目标字符集中不可表示的任何字符将转换为问号。
  2. 文本有时会出现为方框

    • 这是与不具有针对特定字符glpyh字体的问题。当文档中的Unicode字符与字体支持的字符不匹配时,会显示框。具体来说,这些框代表所选字体不支持的字符。
0

基本上已损坏的文本。您将采用一种编码的Unicode文本,然后将其转换为另一种编码,而不检查目标编码是否包含源文本中的所有字符。这样做后,你有一堆乱码。

方法可以做到这包括:

  1. 处理UTF-8作为ANSI文本(没有转换成有效的代码页第一)
  2. 转换Unicode文本转换成代码页没有如果代码检查-page中有正确的字符。
1

这意味着您的Unicode文本正在转换为ANSI文本的某处。由于Latin-1以外的Unicode字符无法转换为ANSI,因此它们会转换为问号。确保你的程序是用Unicode支持编译的(也就是说,预处理器符号UNICODE和_UNICODE是你的项目定义的),所以你总是调用适当的Unicode版本的各种Windows函数。