0

文字列 "Hørt" ではなく、UTF-8 (hex): Hc3b8rt がサーバーから返されます。この応答を通常の UTF-8 に変換する必要があります。

私が試したこと:

NSString *string = [dict objectForKey:@"suggest"];

const char *cfilename=[string UTF8String];

NSString *str = [NSString stringWithUTF8String:cfilename];

お時間をいただきありがとうございます!

4

4 に答える 4

1

文字列エンコーディングを使用し、NSISOLatin1StringEncoding

 - (id)initWithCString:(const char *)nullTerminatedCString 
              encoding:(NSStringEncoding)encoding

またはまもなく、

NSString *str = [NSString stringWithCString:cfilename 
                                   encoding:NSISOLatin1StringEncoding];

コメントの後に編集:

これはちょっと奇妙です。あなたのコメントの後にいくつかの実験を行ったところ、いくつかの奇妙な動作が見つかりました。

- (void) testStringEncodingOK {
    NSString *string = @"h\u00c3\u00a5r";
    const char *cfilename=[string cStringUsingEncoding:NSISOLatin1StringEncoding];
    NSString *cs = [NSString stringWithUTF8String:cfilename];
    NSLog(@"String: %@", cs);
}

この出力: hår

ただし、\u ではなく大文字の \U を取得する場合は、それらを \u に置き換えました。そして、それはうまくいきませんでした。、

- (void) testStringEncodingConfused {
    NSString *string = @"h\\U00c3\\U00a5r";
    string = [string stringByReplacingOccurrencesOfString:@"\\U" withString:@"\\u"];
NSLog(@"Original string:%@", string); // now string = @"h\u00c3\u00a5r"
    const char *cfilename=[string cStringUsingEncoding:NSISOLatin1StringEncoding];
    NSString *cs = [NSString stringWithUTF8String:cfilename];
    NSLog(@"String: %@", cs);
}

出力は h\u00c3\u00a5r

于 2013-05-27T10:01:47.633 に答える
1

これを解読する方法はありません。@JoachimIsaksson が上記のコメントで述べたように、「abba」が正確に「abba」なのか 2 つの Unicode 文字なのかをどのように判断できますか?

于 2013-05-27T10:16:15.790 に答える
0

以下のコードを使用してください..

  const char *ch = [yourstring cStringUsingEncoding:NSISOLatin1StringEncoding];

  yourstring = [[NSString alloc]initWithCString:ch encoding:NSUTF8StringEncoding];

   NSLog(@"%@",yourstring);

それが機能しているかどうかを教えてください...

ハッピーコーディング....

于 2013-05-27T10:05:52.780 に答える