- Safari Developer News -
WebCoreHMDTv85

新井隆浩さんが、Safari の文字化けパッチを公開しています。これは、Safari を使っていると、ときどき文の途中が数文字から数十文字いきなり化けることがあるでしょう?それのためのパッチだ。

技術的な説明をすると、Safari はページの読み込みを開始すると、読み込んだそばからテキストデータをデコード(たとえば Shift-JIS から Unicode へ)していくんだ。だけど、知っての通り、日本語(やアジア圏の言葉)は、2 byte 以上でできている。だから、常にきりのいいところでテキストが送られてくる保証はなくて、途中でぶった切られている可能性もある。

テキストのデコードには Text Encoding Converter っていうライブラリが使われているんだけど、こいつは多バイトの分断が起きたときに、kTECPartialCharErr っていうエラーを返す。だから、このエラーをチェックして分断されたバイトを保存しておけばいいんだけど、Apple がこれをやっていないんだな。多バイト圏のことを考えていないのか、Apple。

この問題を解決するのが、新井さんのパッチだ。パッチを当てるには、WebCore のソースコードと、コンパイルができる環境が必要なので、注意。

で、コンパイルできる環境が無い人のために、公開してみることにした。新井さんのパッチを適用した、WebCoreHMDTv85 だ。

注意!:以下にインストール方法を書くけれども、意味が分からない人は実行しないで下さい。また、実行した場合は必ず自己責任でお願いします。

  1. WebCoreHMDTv85.dmg をダウンロードして、マウントする。Safari なら、自動的に WebCoreHMDTv85 がマウントされるはずだ。

  2. WebCore.framework のバックアップを取る。ターミナルを立ち上げて、まず WebKit のディレクトリに移動する。

    cd /System/Library/Frameworks/WebKit.framework/Frameworks/

    そして、次のコマンドを打ち込む。

    sudo mv WebCore.framework WebCore.old.framework

    パスワードを聞かれたら、管理者のパスワードを打ち込む。

  3. WebCoreHMDTv85 をコピーする。次のコマンドを打ち込む。

    sudo cp -R /Volumes/WebCoreHMDTv85/WebCore.framework .

    最後のピリオドを忘れないように。

これでオッケー。Safari を起動すればよい。起動しない場合は、落ち着いてファイル名を確認する。どうしてもだめな場合は、バックアップのフレームワークに戻す。ここまで読んでよく分からなかった人には、おすすめしません。


[Home] [Download] [Archives] [BBS] [Cocoa Programming Tips 1001] [Core Foundation の秘密] [Safari Developer News] [はじめてのブラウザのつくり方] [Sketch BP] [スクリーンセイバーを作ろう] [Objective-C 最適化] [Authorization API 完全理解]

mailto: mkino@xd5.so-net.ne.jp