【发布时间】:2013-11-09 09:21:54
【问题描述】:
执行此代码以读取文件并在单独的行中打印每个字符 \(字节)
适用于 ASCII
void
preprocess_file (FILE *fp)
{
int cc;
for (;;)
{
cc = getc (fp);
if (cc == EOF)
break;
printf ("%c\n", cc);
}
}
int
main(int argc, char *argv [])
{
preprocess_file (stdin);
exit (0);
}
但是当我将它与 UTF-8 编码的文本一起使用时,它会显示不可编辑的字符 比如
ï
»
؟
ط
§
ظ
„
ظ
…
ط
¤
ط
´
ط
和建议?
谢谢
【问题讨论】:
-
我不太了解 C 库,无法告诉您如何解决此问题,但您应该停止假设 1 字节 == 1 个字符。在许多编码中——包括 UTF-8——这根本不是真的,至少不是所有字符。