如何使用 fscanf 读取 UTF-8 编码
Posted
技术标签:
【中文标题】如何使用 fscanf 读取 UTF-8 编码【英文标题】:How to read UTF-8 encoding with fscanf 【发布时间】: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)?
【参考方案1】:
无需更改代码。 UTF8 旨在与上述大多数不支持 UTF8 的单字节字符串函数一起使用,只要您不必使用解码的代码点,例如将字符串打印到屏幕上。
【讨论】:
但这两个文件的读取方式不同。特殊字符(如 Á)使用单个十六进制代码 (ISO-8859-1) 或两个十六进制代码 (UTF-8) 读取,具体取决于使用的命令。 对不起,我以为那是标准的 C 函数 fscanf。以上是关于如何使用 fscanf 读取 UTF-8 编码的主要内容,如果未能解决你的问题,请参考以下文章