我试图打开,阅读和打印包含chiness's char的文件。
UChar tab[50];
UFILE *file;
if ((file = u_fopen("test.txt", "r", uloc_getDefault(), "UTF-16BE")) == NULL)
return (fprintf(stderr, "error: fail top open test.txt"));
u_fgets(tab, 100, file);
u_printf("%s\n", tab);
u_fclose(file);
return (0);
在输出中,我有:“]] ??”
我不明白这一点。 但是,我已将我的语言环境系统设置为中文,我的文件编码为“UTF-16BE” PS:我在Windows系统上编码 请......非常重要!
答案 0 :(得分:0)
问题可能是您使用的格式说明符不正确。 %s
格式说明符告诉u_printf()
期望可变参数流中的C样式char*
字符串。如果要传递UTF-16 UChar*
字符串作为参数,则必须使用%S
说明符。请参阅http://icu-project.org/apiref/icu4c/ustdio_8h.html上的文档,特别是格式和分析规范部分。
所以改变
u_printf("%s\n", tab);
到
u_printf("%S\n", tab);