Encode international Web addresses with UTF-8
先日、父の葬儀と初七日をやったので、Wikipediaなどで「浄土真宗」を調べたりする。うちの宗派は浄土真宗だもんで。Wikipediaを開くと、アドレスバーに普通は
http://ja.wikipedia.org/wiki/%E6%B5%84%E5%9C%9F%E7%9C%9F%E5%AE%97
っていう長ったらしいURIが表示されるけど、Operaはデフォルト設定で
http://ja.wikipedia.org/wiki/浄土真宗
っていうふうになる。Operaを使い始めたころ、これに気づいたときは「なんて素晴らしいお節介なんだ!」と感激したもんだ。
- でも、ブログにテキストアンカーをぺたっと貼りつけたいとき不便。
- Operaのほうで "Execute program,"D:\PrivFold2_pg\Mozilla Firefox\firefox.exe","%u"" をやると、Firefoxは正しく
http://ja.wikipedia.org/wiki/%E6%B5%84%E5%9C%9F%E7%9C%9F%E5%AE%97
を表示する。なんか不思議。
- 逆にFirefox側からOperaViewを使うと、
http://ja.wikipedia.org/wiki/%25E6%25B5%2584%25E5%259C%259F%25E7%259C%259F%25E5%25AE%2597
なんていうページがOpera側のほうに出てきて、困ったもんだ。エンコーディングがどうたらこうたらという理由だと思うけど。
設定で "Encode international Web addresses with UTF-8" のチェックを外すことにした。
左角括弧と右角括弧
- しかし、そういうふうにしても依然として、Firefox + OperaView でOperaを呼び出すと、文字化けして http://ja.wikipedia.org/wiki/%25E6%25B5%2584%25E5%259C%259F%25E7%259C%259F%25E5%25AE%2597 というページがOperaのほうに出てきてしまう。
- この現象(「Opera → Firefox」はOK、「Firefox → Opera」はNG)はWikipediaだけでなくGoogleのWeb検索結果のページでも起きる。
- さらに言えば、クエリーに日本語が混ざるときだけこの問題が発生するわけではない。
- "ball" の意味を調べるため Merriam-Webster Online Dictionary を使うと、
http://www.merriam-webster.com/dictionary/ball
になる。ここまではFirefoxもOperaも同じ。
- しかし、さらに動詞としての "ball" の意味を知るために "2 ball (verb)" をクリックすると、Operaのアドレスバーには左右の角括弧が現れる。URIに角括弧なんて珍しい。
http://www.merriam-webster.com/dictionary/ball[2]
Firefoxのロケーションバーには以下の文字列が。うーむ …
http://www.merriam-webster.com/dictionary/ball%5B2%5D
- Merriam-Webster Online Dictionary のようにURIに角括弧が含まれる場合でも、やはり「Opera → Firefox」はOK、「Firefox → Opera」はNGになる。
Operaに非があるのか、OperaView (Firefox) に非があるのか、不明。
たぶんOperaViewのほうで、Operaに渡す前にencodeURIというjavascript関数を実行してからOperaに投げてるんだと思います。既にエンコードされたものにもう一度それをやると%が2回エンコードされるので上みたいになります。
解決方法は、OperaViewのソースを見て、
encodeURI(hogehoge)
とか
encodeURIComponent(hogehoge)
とか書いてあるところを単に
hogehoge
に変えればいいと思います。
2008/10/04(土) 21:55:23 |
URL |
edvakf #Y.EWVbK6[
edit]
ソース見ても、encodeURI という文字列はないですねぇ。なんとなく以下のコードがそれっぽいんですけど、意味がさっぱりわかりません。
// deleted these chars from the include list ”;”, ”/”, ”?”, ”:”, ”@”, ”=”, ”&” and #
// so that we could analyze actual URLs
var unsafeString = ”¥”<>%¥¥^[]`¥+¥$¥,”;
2008/10/05(日) 11:47:35 |
URL |
ArtSalt(管理人) #9qbqh80c[
edit]