0

重複の可能性:
object-c での unicode エスケープ

LATIN1 文字列があります。

Artîsté

json_encode すると、一部の文字がエスケープされ、1 バイトの UTF8 に変換されます。

Art\u00eest\u00e9

json_decodeしただけなら、UTF8でデコードしていると思います

Artîsté

元の文字列を取り戻すには、utf8_decode を呼び出す必要があります

Artîsté

Objective-Cでこの変換を処理する方法はありますか?

4

2 に答える 2

1

あなたはこれを探しているかもしれません:

NSString *string = (some string with non-ASCII characters in it);
char const *string_as_latin1 = [string cStringUsingEncoding:NSISOLatin1StringEncoding];

またはおそらくこれ:

NSData *data_latin1 = [string dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];
于 2011-10-25T21:53:32.770 に答える
1

LATIN1 文字列があります。

私はあなたがしないと思います。PHP について話していると仮定すると、json_encode()UTF-8 文字列のみを受け入れ、UTF-8 以外の上位バイト シーケンスにヒットすると救済されます。

json_encode("Art\xeest\xe9")
"Art"
json_encode("Art\xc3\xaest\xc3\xa9")
"Art\u00eest\u00e9"

最初に適切な UTF-8 文字列があったと思いますが、それをエンコードおよびデコードして、まったく同じ UTF-8 文字列を取得しました。しかし、それを表示したり、表示していない別のステップで処理したりして、文字列を Latin-1 であるかのように扱います。

于 2011-10-25T21:54:07.280 に答える