【问题标题】:How to read UTF-8 encoding with fscanf如何使用 fscanf 读取 UTF-8 编码
【发布时间】:2019-12-27 22:56:18
【问题描述】:

Octave 4.2.2 使用fscanf 命令读取ISO-8859-1 字符(格式化为读取空格):

foo = fscanf(foofile1, "%*s %[^\n]");

fgetl 读取原生UTF-8

foo = fgetl(foofile2);

两个文件都显示为UTF-8

$ file -i foofile1.csv 
foofile1.csv: text/plain; charset=utf-8

$ file -i foofile2.html
foofile2.html: text/html; charset=utf-8

有没有什么办法可以用fscanf读取UTF-8格式的HTML文件?

更新:正如@TS 所指出的,这已被报告为savannah.gnu.org 中的一个错误。

【问题讨论】:

  • 这个解决方法是否提到here 工作:deal(textscan(foofile1, "%*s %[^\n]"){:});
  • 同样的结果,@TS,它不是以 UTF-8 格式读取的。
  • 您能否提供具有预期输出的最小示例(ANSI 和 utf8)?

标签: utf-8 scanf octave iso-8859-1


【解决方案1】:

无需更改代码。 UTF8 旨在与上述大多数不支持 UTF8 的单字节字符串函数一起使用,只要您不必使用解码的代码点,例如将字符串打印到屏幕上。

【讨论】:

  • 但这两个文件的读取方式不同。特殊字符(如 Á)使用单个十六进制代码 (ISO-8859-1) 或两个十六进制代码 (UTF-8) 读取,具体取决于使用的命令。
  • 对不起,我以为那是标准的 C 函数 fscanf。
猜你喜欢
  • 2017-08-29
  • 2016-08-14
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多