如何使用fscanf读取UTF-8编码

如何使用fscanf读取UTF-8编码,utf-8,scanf,octave,iso-8859-1,Utf 8,Scanf,Octave,Iso 8859 1,倍频程4.2.2使用fscanf命令读取ISO-8859-1字符(格式化为读取空格): 当fgetl读取本机UTF-8: foo = fgetl(foofile2); $ file -i foofile1.csv foofile1.csv: text/plain; charset=utf-8 $ file -i foofile2.html foofile2.html: text/html; charset=utf-8 两个文件都显示为使用UTF-8编码: foo = fgetl(foof

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

fgetl
读取本机
UTF-8

foo = fgetl(foofile2);
$ file -i foofile1.csv 
foofile1.csv: text/plain; charset=utf-8

$ file -i foofile2.html
foofile2.html: text/html; charset=utf-8
两个文件都显示为使用UTF-8编码:

foo = fgetl(foofile2);
$ 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所指出的,这已被报告为中的一个bug。

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

无需更改代码。UTF8设计用于处理大多数不支持UTF8的单字节字符串函数,例如,不必使用解码的代码点将字符串打印到屏幕上。

但这两个文件的读取方式不同。特殊字符(如Á)根据所使用的命令使用单个十六进制代码(ISO-8859-1)或两个十六进制代码(UTF-8)读取。对不起,我认为这是标准的C函数fscanf。但两个文件的读取方式不同。特殊字符(如Á)是用一个十六进制代码(ISO-8859-1)或两个十六进制代码(UTF-8)读取的,具体取决于所使用的命令。对不起,我认为这是标准的C函数fscanf。提到的这种解决方法是否有效:
deal(textcan(foofile1,%*s%[^\n]”{:})?相同的结果,@TS,它不是以UTF-8格式读取的。您能提供预期输出的最小示例(ANSI和utf8)吗?所提到的解决方法是否有效:
deal(textscan(foofile1,%*s%[^\n]”){:}?相同的结果,@TS,它不是以UTF-8格式读取的。您能提供预期输出的最小示例(ANSI和utf8)吗?