【问题标题】:Objective - C, NSDictionary encoding in utf-8Objective - utf-8 中的 C、NSDictionary 编码
【发布时间】:2012-05-30 07:13:14
【问题描述】:

我有 NSDictionary,我从 .plist 中读取的内容以 utf-8 编码。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ABACİ</key>
    <array>
        <string>ABALİ</string>
        <string>APACİ</string>
        <string>ARAÇİ</string>
    </array>

等等

无论如何,问题是当我 NSLog 将此字典上的内容记录到控制台时,我会得到类似的结果

"K\U00d6PEK"

这是另一个不包含常规拉丁英文字符的条目的记录版本。我尝试使用的字符是 UTF-8 编码。

但是,当我从文本文件中读取数组的内容时

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"words_tr" ofType:@"txt"];
        NSString *contentString = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];

        _wordStack = [[NSMutableArray alloc]initWithArray:[contentString componentsSeparatedByString:@","]];

这非常有效。我也想从属性列表中读取数据。如何获取 NSDictionary 的 UTF-8 编码结果?

【问题讨论】:

    标签: objective-c encoding utf-8 nsdictionary special-characters


    【解决方案1】:

    你试过用这个来 NSLog 吗?

    NSLog(@"%@", [NSString stringWithCString:contentString encoding:NSUTF8StringEncoding]);
    

    【讨论】:

    • 这不是我想要的。我想使用正确的编码访问 NSDictionary 并将键与用户输入进行比较。 NSString 只是一个例子。
    • 好吧,我猜你的问题是 NSLog 通常不支持 UTF8 字符串。所以它显示不正确,但是你的字符串是正确的。通过将字符串分配给 UILabel 更容易测试。
    • 确实是这样。我不知道 NSLog 不支持 UTF8。谢谢!你知道是否有任何支持吗?我查看了偏好,但没有运气。
    • 这里有很好的答案如何stackoverflow.com/questions/720052/nslog-problem
    【解决方案2】:
    +(NSString*)utf8toNString:(NSString*)str{
        NSString* strT= [str stringByReplacingOccurrencesOfString:@"\\U" withString:@"\\u"];
        //NSString *strT = [strTemp mutableCopy];
        CFStringRef transform = CFSTR("Any-Hex/Java");
        CFStringTransform((__bridge CFMutableStringRef)strT, NULL, transform, YES);
    
        return strT;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 2016-09-22
      • 2011-06-17
      • 2011-10-30
      • 2012-11-07
      • 1970-01-01
      相关资源
      最近更新 更多