【问题标题】:Read text and print each (byte) character in separate line读取文本并在单独的行中打印每个(字节)字符
【发布时间】: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——这根本不是真的,至少不是所有字符。

标签: c file utf-8


【解决方案1】:

要识别 Unicode,您需要使用 fgetwc 而不是 getc

此外,为了使fgetwc 与 UTF-8 一起使用,您可能需要配置您的环境以将 UTF-8 视为默认字符编码。但是,这是现代 Linux 系统的默认设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多