« Konquerorとエスケープ文字(JavaScript謎のエラーを解く) | トップページ | IE7β3(日本語版)とフルスクリーン表示 »

2006/07/11

KonquerorとJavaScript(特定漢字での動作不良)



基本性能に優れた省スペースモデル VALUESTAR G タイプL

ココログが2日間のメンテナンスに入る前に一気に投稿したい思いで、この記事を急いで仕上げています。といっても、このココログはここ数日、公式なメンテナンス実施日だけだなく、実質的に管理者メニューに全くログインすらできない状況が頻発しています。障害発生を伝える、こちらのアナウンス・ページは炎上しています。

それはさておき、Konqueror(Linuxのブラウザ)ネタの続きです。Konquerorでは、他にもJavaScriptの動作が不安定な面があります。一部の特定の文字があると、replaceメソッドによる変換が正しく行われなくなるというものです。たとえば、

Konquerorで不具合が発生するソースのサンプル:

とあった場合、Konqueror以外のブラウザでは、

あいうえお
あいう刀えお
あいう山田えお
あいう最近えお
あいう供給えお
あいう需要と供給えお

と表示されますが、Konqueror様(「CentOS 4.3 + Konqueror 3.3.1」「SuSE Linux 10.1 + Konqueror 3.5.1」でテスト。)は違います。

あいうえお
あいう刀aえお
あいう山田えお
あいう最近aえお
あいう供給えお
あいう需要と供給aえお

と表示されます。特定の文字(「刀」「最」「需」)が混じっていると、それ以降の文字列についての置換作業をストップしてしまう不具合が発生します。「a」をreplaceメソッドで消しているはずなのに、消えずに残ります。


なぜ、こういう現象が起こるかと言えば、「刀」「最」「需」の2バイト目が「0x00」であるためです。この2バイト目の「0x00」をnull文字のように解釈し、それ以降の文字列の検査をやめてしまうのが原因のようです。2バイト目が「0x00」になる文字をプログラムで求めてみると、

倀 儀 刀 匀 吀 唀 嘀 圀 堀 夀 怀 愀 戀 挀 搀 攀 昀 最 栀 椀 瀀 焀 爀 猀 琀 甀 瘀 眀 砀 礀 耀 脀 舀 茀 萀 蔀 蘀 蜀 蠀 褀 退 鄀 鈀 錀 鐀 销 阀 需

などになります。これらの文字が混じっていると、Konquerorではreplaceメソッドによる置換作業がうまくいきません。また、これは前回の記事の時の話と違って文字コードに関係はなく、Shift_JISだけでなく、EUC-JPやUTF-8のページでも起こります。

<<Konqueror関連のこれまでの記事>>

● Konquerorとエスケープ文字(JavaScript謎のエラーを解く)
http://shimax.cocolog-nifty.com/search/2006/07/konquerorjavasc_e604.html
JavaScriptの中に「\」(エスケープ文字。バックスラッシュ。環境によっては円マークが表示されていると思います。)があると、Shift_JISのページでは、JavaScriptが正しく動作しない不具合がKonquerorにはあるというお話。

● Konquerorで画像の入れ替えJavascriptで不具合が発生するケース
http://shimax.cocolog-nifty.com/search/2005/10/_.html
ロールオーバーが正しく動作しない(少なくとも、期待どおりに動作しない)ケースがあることなどについて説明しています。

● Google Adsense文字化け with Konqueror3.1.5
http://shimax.cocolog-nifty.com/search/2005/05/google_adsense__dd9a.html
Konqueror 3.2.3や3.3.1、3.5.1では発生しないので、特定のバージョンのみの問題かもしれません。

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67411/10897171

この記事へのトラックバック一覧です: KonquerorとJavaScript(特定漢字での動作不良):

コメント

コメントを書く