Isa*_*aac 12 c++ stream utf-8 icu
我很难开始使用C++ ICU库.我试图让最简单的例子起作用,但即使这样也失败了.我只想输出一个UTF-8字符串,然后从那里开始.
这是我有的:
#include <unicode/unistr.h>
#include <unicode/ustream.h>
#include <iostream>
int main()
{
UnicodeString s = UNICODE_STRING_SIMPLE("??????");
std::cout << s << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
$ g++ -I/sw/include -licucore -Wall -Werror -o icu_test main.cpp
$ ./icu_test
пÑивеÑ
Run Code Online (Sandbox Code Playgroud)
我的终端和字体支持UTF-8,我经常使用带UTF-8的终端.我的源代码是UTF-8.
我想也许我不知何故需要将输出流设置为UTF-8,因为ICU将字符串存储为UTF-16,但我真的不确定,我会认为ustream.h提供的运算符无论如何都会这样做.
任何帮助将不胜感激,谢谢.
Ste*_*mis 13
如果您只是将初始化程序更改为:
UnicodeString s("??????");
Run Code Online (Sandbox Code Playgroud)
您使用的宏仅适用于包含"不变字符"的字符串,即只有拉丁字母,数字和一些标点符号.
如前所述,输入/输出代码页很棘手.你说:
我的终端和字体支持UTF-8,我经常使用带UTF-8的终端.我的源代码是UTF-8.
这可能是真的,但ICU并不知道这是真的.进程代码页可能不同(假设iso-8859-1),输出代码页可能不同(让我们说shift-jis).然后,该程序将无法正常工作.但是,使用API UNICODE_STRING_SIMPLE的不变字符仍然有效.
希望这可以帮助.
srl,icu dev
| 归档时间: |
|
| 查看次数: |
5941 次 |
| 最近记录: |