2011-07-24 3 views
0

サーバからUnicodeでデータを取得しました。しかし、私はUTF8でこのデータが必要です。データをUTF8エンコーディングに変換するにはどうすればよいですか?データのエンコードを変更する

+1

Unicodeはエンコードではありません。 Unicodeは一連のエンコーディング標準です。 UTF8はエンコーディングです。 UTF8はUnicodeの実装です。 –

+1

あなたは精緻化できますか? 「変換する」とはどういう意味ですか? UTF-16やLatin-1で文字データがあり、UTF-8で*再エンコードする必要があることを意味しますか? –

+0

はい、私はUnicodeでデータを取得しました。実際には結果としてNSCStringEncodingでデータを取得する必要があります。私は余分な文字列を使用してこれを達成することができますが、私はより簡単な方法を探しています。 –

答えて

1

理想的なソリューションですが、そのサーバーが最初の場所であなたのUTF-8を送信します。

UTF-8はUnicodeのエンコーディングであるため、あなたの質問で「Unicode」が意味することに応じて、すでにそれが行われている可能性があります。

ココアは、UTF-16を参照するシンボルNSUnicodeStringEncodingの「Unicode」を誤って使用しています。それはサーバーがあなたに送るものである可能性はありますが、ありそうもありません。

サーバーは、Content-Typeヘッダーでコンテンツ用に使用したエンコードを教えてください。サーバーが特定のエンコーディングを使用すると仮定するのではなく、プログラムでそれを見るべきです。

ヘッダーにエンコーディングが指定されていない場合は、UTF-8として扱います。それでも問題が解決しない場合は、サーバーを実行している人には不平を言ってください。

CocoaでサポートされているエンコーディングからUTF-8に変換するには、入力データとそのエンコーディングをthe -[NSString initWithData:encoding:] methodに渡してデータをデコードして文字列を生成します。文字列a dataUsingEncoding: messageNSUTF8StringEncodingで送信します。

1

まあUTF-8 は、Unicodeのエンコーディングですが、文字列を取得するには:

NSString *string = [[NSString alloc] initWithData:yourData encoding:NSUTF8StringEncoding] 
+0

これは、データがUTF-8でエンコードされている場合にのみ機能します。 *を* UTF-8に変換しません。 –

関連する問題