コンテンツへスキップ

WCF側でエンコードを明示的に指定しないと、textEncodingNameのtextEncodingNameがnilに

2010年8月26日

iPhoneから接続テストをしてたんだけど、WCFからダウンロードしたNSDataをStringにデコードすると、結果がnilになってしまいました。

NSDataには確実に何かが入っているのでダウンロードできているのは分かります。

どうやら、デコード(NSString の initWithData:encoding:)に指定する文字コードとNSDataの実際の文字コードに相違があるとnilになるようです。

WCFからレスポンスするときに文字コードをきちんとしたいので、Web.configのglobalization要素のresponseEncoding属性に"UTF-8"を指定してみました。

すると、textEncodingNameで"UTF-8"が拾えるようになりました。

これで、textEncodingNameを判断してinitWithData:encoding:できます。

いろいろなサイトを対象にするなら、textEncodingNameがnilな場合も考慮した方が良いでしょうね。

From → .NET

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。