0

我正在尝试将匈牙利字符转换为 NSData。使用 PC865 的代码页。

这是这里的代码。

NSString *test = @"őű";
NSStringEncoding *coding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSNordic);
        NSData *myData = [test dataUsingEncoding:coding allowLossyConversion:YES];
        NSLog(@"my data %@", myData);

我收到的输出是我的数据 <3f3f>

它们都是不同的字符,但是为什么我收到相同的数据,实际上在查看 PC865 表后它们都是错误的数据。

4

1 回答 1

1

您的代码中有一个错误,NSStringEncoding是标量类型,而不是指向 Objective-C 对象的指针。因此必须是

NSStringEncoding coding = ...

没有*.

但主要问题是代码页 865(北欧语言,http ://en.wikipedia.org/wiki/Code_page_865 )不包含字符

ő = U+0151 = 带有双锐音的拉丁文小写字母 O
ű = U+0171 = 带有双锐音的拉丁文小写字母 U

由于您指定allowLossyConversion:YES,转换不会失败,而是用问号 (0x3F) 替换字符。

如果您选择代码页 852(中欧语言,http ://en.wikipedia.org/wiki/Code_page_852 ):

NSStringEncoding coding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSLatin2);

然后你会得到结果<8bfb>

于 2013-11-02T09:45:44.180 回答