Skip to content

Objective-CのデフォのNSASCIIStringEncodingが弱かった

2013年3月16日

現在、HTML5を受け取り、それに対しプロジェクト内に用意しているJavaScriptを叩いて、HTML5内に記述されているJavaScriptを抜き出し、それを用意しておいたHTMLファイルにインサートするというわけのわかんないことをやってる。(書いてて何やってんだコレって思った)

そこで、抜き出してきたJavaScriptのなかに日本語が入っている場合、文字化けが発生して表示すらされなくなってしまった。

はてと思い調べてみると、WebViewがUTF-8のHTMLをShift-Jisとして抜き取ってきていて、しかもその文字化けした文字がiOS上で更に化けているという事態になっていた。

そこでWebViewからの直接取得を諦め、NSURLConnectionでソースコードを取得するそしてデコードを行うこととした。

そしてデコードのコードは以下のようになる。

NSString *decoded = (NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,(CFStringRef) utf8src,CFSTR(""),kCFStringEncodingUTF8);

簡単なやつを使うと日本語が正しくデコードされずに化けたままだったが、このデコードの仕方なら問題なくデコードできる。

広告

From → iPhone開発

コメントする

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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