0

我需要了解使用 '\uhhhh' 时 UNICODE_STRING_SIMPLE 宏的行为

我有以下代码:

cout<<"Char print out for À"<<endl;
SCAUString us = UNICODE_STRING_SIMPLE ("À");
cout<<"us.countChar32()="<<us.countChar32()<<endl;
for (int i=0; i<us.countChar32(); i++)
  cout<<(int)us.charAt(i)<<" ";

输出:us.countChar32()=2 195 8364

但下面给出了不同的答案:\u00C0 是 À

cout<<"\nChar print out for \\u00C0"<<endl;
us = UNICODE_STRING_SIMPLE ("\u00C0");
cout<<"us.countChar32()="<<us.countChar32()<<endl;
for (int i=0; i<us.countChar32(); i++)
  cout<<(int)us.charAt(i)<<" ";

这里的输出是:us.length()=1 192

谁能解释为什么会有差异?

我使用 ustream.h 写入文件:

testFile<<"5:"<< UNICODE_STRING_SIMPLE ("À"); // needs ustream.h
testFile<<endl;
testFile<<"6:"<< UNICODE_STRING_SIMPLE ("\u00C0"); // needs ustream.h
testFile<<endl;

testFile 是一个流。当我打开时,我看到 5:À 但 6 是错误的:6:' 我在 Visual Studio 中打开了文本文件,这就是 VS 显示给我的实际字符。

4

1 回答 1

0

什么是SCAUString

\u单反斜杠)由您的编译器解释。也许编译器不认为目标代码页与 ICU 期望的相同?

尝试这个:

printf("%x or %x?\n", (int)'À', (int)'\u00C0');

于 2013-04-26T01:05:41.777 回答