gpt4 book ai didi

c - 在c/cocoa中读取和输出UTF-8字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:56 25 4
gpt4 key购买 nike

在 objective-c/cocoa 应用程序中,我使用 c 函数打开一个文本文件,逐行读取它并在第三方函数中使用一些行。在伪代码中:

char *line = fgets(aFile);
library_function(line); // This function calls for a utf-8 encoded char * string

在输入文件包含特殊字符(例如重音符号或 UTF-8 BOM)之前,此方法工作正常,此时库函数输出错位字符。


但是,如果我这样做:

char *line = fgets(aFile);
NSString *stringObj = [NSString stringWithUTF8String:line];
library_function([stringObj UTF8String]);

然后一切正常,字符串输出正确。


那个 [NSString... 行是做什么的,我不是?我是不是对最初获取该行的方式做错了什么?还是完全不同?

最佳答案

UTF-8 是一个多字节字符集 ( see wikipedia ),这意味着某些字符需要多个字节(您遇到过的重音字符)。 C 的 char 类型是单字节,因此 C 对“字符”的定义与 Unicode 不匹配。

如果您想使用标准 C RTL 读取 Unicode,您还需要使用 Unicode 转换库,例如 libiconv .

(使用 wchar_t 也可能有效;我从未研究过它。)

或者你可以使用已经支持 Unicode 的 NSString。

关于c - 在c/cocoa中读取和输出UTF-8字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2117449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com