我已经成功设置了一个小型 XZ 压缩器,它返回一个包含压缩输出的 std::string。要处理结果,我需要将 std::string “转换”为 NSString。不幸的是有(编码?)问题:
即使“abc”不是一个很好的例子,它也很好地显示了难度:
NSString *text = [_text string]; // Length is 3
std::string content = xz_compress([text UTF8String]); // Length is 60
NSString *convertedContent = [NSString stringWithCString:content.c_str() encoding:NSUTF8StringEncoding];
// convertedContent is (null) and 0 characters long
使用 NSUnicodeStringEncoding 使 NSString 至少有 2 个字符长,但它们与 std::string 中的不匹配。
我的问题:
- 这种方式可能/更可取的方式(已经不确定)吗?
- 如果是这样:我需要使用什么编码?
提前致谢!
保罗