如何以unicode(BE)格式将数据存储在CFDataRef中?

时间:2012-09-26 16:04:02

标签: objective-c cfstring cfdata

我正在将字符串数据写入一个文件,其中数据应该用ASCII编写,然后基本上用Unicode重复。 ASCII部分运行良好,但Unicode版本是乱码。尝试使用 CFStringCreateMutableWithExternalCharactersNoCopy 显式创建Unicode字符串失败。建议和示例代码表示赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用CFStringRefCFDataRef转换为CFStringCreateExternalRepresentation,例如

CFStringRef s = CFSTR("abc €");
CFDataRef d = CFStringCreateExternalRepresentation(NULL, s, kCFStringEncodingUTF16BE, 0);
// d now contains the bytes 00 61 00 62 00 63 00 20 20 ac.

NSString/NSData

NSString *s = @"abc €";
NSData *d = [d dataUsingEncoding:NSUTF16BigEndianStringEncoding];