C 读取文本并在单独的行中打印每个(字节)字符
执行此代码以读取文件并在单独的行中打印每个字符\(字节) 可以很好地使用ASCIIC 读取文本并在单独的行中打印每个(字节)字符,c,file,utf-8,C,File,Utf 8,执行此代码以读取文件并在单独的行中打印每个字符\(字节) 可以很好地使用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
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编码文本一起使用时,它会显示无法读取的字符
比如
ï
»
؟
ط
§
ظ
„
ظ
…
ط
¤
ط
´
ط
还有建议
感谢要了解Unicode,您需要使用
fgetwc
而不是getc
此外,要使用UTF-8,您可能需要配置您的环境,将UTF-8作为默认字符编码。但是,这是现代Linux系统上的默认设置。我对C库不太了解,无法告诉您如何解决这个问题,但是您应该停止假设1字节==1个字符。在许多编码中(包括UTF-8),这根本不是真的,至少不是所有字符都是这样。可能的重复: