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

Posted

技术标签:

【中文标题】如何以 unicode (BE) 格式将数据存储在 CFDataRef 中?【英文标题】:How do I store the data within CFDataRef in unicode (BE) format? 【发布时间】:2012-09-26 16:04:02 【问题描述】:

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

【问题讨论】:

【参考方案1】:

例如,您可以使用CFStringCreateExternalRepresentationCFStringRef 转换为CFDataRef

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];

【讨论】:

以上是关于如何以 unicode (BE) 格式将数据存储在 CFDataRef 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QNetworkAccessManager 发布 Unicode 数据

如何使用codecs模块将unicode数据娉蒰bk格式

Unicode数据未使用webapi以正确的格式保存在sql数据库中

WTForms 以 unicode 格式从表单中引入数据

我如何以python不将数据解释为unicode的方式编写它?

没有排序规则的 Unicode (UTF-16) 数据如何存储在 varchar 列中?