2

utf-8でエンコードされた.plistからコンテンツを読み取ったNSDictionaryがあります。

<?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でエンコードされた結果を取得するにはどうすればよいですか?

4

2 に答える 2

1

これでNSLogを試みましたか?

NSLog(@"%@", [NSString stringWithCString:contentString encoding:NSUTF8StringEncoding]);
于 2012-05-30T07:17:36.117 に答える
1
+(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;
}
于 2015-05-18T10:37:02.603 に答える