- ベストアンサー
HTTPHeader情報の日本語が文字化けします
- Mac OS X 10.6.7の開発環境で、HTTPHeader情報に日本語が含まれると文字化けしてしまいます。
- HTTPレスポンスで返されるHeaderの情報には、正しいShift-JISのコードが含まれているにもかかわらず、取得した結果に不要なx00が補填されています。
- 現在のところ、この文字化け現象を回避するための解決策は見つかっていません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こっちを試してみるとか: NSData* sjisData = [str dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];
その他の回答 (2)
- SAYKA
- ベストアンサー率34% (944/2776)
http://www.google.com/search?hl=ja&q=%22didReceiveResponse%22 NSDictionary に渡してるみたいだけどちょっと見てみると NSData(mutableだとおもうけど)で受け取ってる物も見受けられるけどやってみた?
お礼
度々ありがとうございます。<(_@_)> 同期通信だと、NSDataでも受取れるようですね。。。 ただ、今回の場合、非同期で行う必要があり、かつ以下のコードにおいて、 NSDictionary *dic = [(NSHTTPURLResponse *)response allHeaderFields]; allHeaderFields というメソッドの戻り値の型が、NSDictionary* であり、 その型でしか受取れないというのが、現状です。。。
- SAYKA
- ベストアンサー率34% (944/2776)
http://www.google.com/search?hl=ja&q=%22nsdata%22%20shift_jis%20%E5%A4%89%E6%8F%9B どうやら NSString の dataUsingEncoding ってので変換が要るみたい
お礼
早速のご回答ありがとうございます。 ご教示頂いたページを参考に試してみましたが、 やはり正しいと思われるバイト列が返ってきません。 1:NSString* str = [dic objectForKey:@"Icy-Name"]; 2:NSData* sjisData = [str dataUsingEncoding:NSShiftJISStringEncoding allowLossyConversion:YES]; 1の段階の str に、既に x00 が補填されたShift-Jis文字列が返されているため、 sjisData には、解析不能なバイト列が返されます。(T^T)
お礼
ご回答ありがとうございます! 上記のエンコーディングで試したところ、 特にバイト操作する事もなく、 正しいShift-Jis文字列が返されました。 結果として、正しく表示できました。 エンコーディングは、色々試していたつもりなのですが、 上記は、失念していたようです。失礼いたしました。 本当にありがとうございます。感謝にたえません。<(_@_)> 重ね重ね御礼申し上げます。