2007年12月19日
日本語で検索できるようにするパッチ
検索ウインドウで日本語で検索できないよ!というレポートが上がっていたので、
日本語で検索できるようにするパッチを作りました。
http://jira.secondlife.com/browse/SVC-1020

まだvoteが3でほとんど誰も注目していないようですが、
「入力が半角カナになっちゃうよ事件」(笑)のように
皆が必要だと思って投票すれば、正式リリースに組み込まれるかもしれません。
投票のしかたはこの辺のページが参考になります。
不満があればJIRAに投票
http://keimar.slmame.com/e65545.html
日本語入力おかしいと思ったらJiraで投票
http://movings.slmame.com/e65518.html
JIRAについて ~日本語環境のセカンドライフに困っていませんか - Chizzy Dilley のセカンドライフレポート
http://blogmag.ascii.jp/secondlife/2007/11/001060.html
Issue tracker-ja - Second Life Wiki
https://wiki.secondlife.com/wiki/Issue_tracker/ja
日本語で検索すると意外な発見があって面白いですよー
日本語で検索できるようにするパッチを作りました。
http://jira.secondlife.com/browse/SVC-1020

まだvoteが3でほとんど誰も注目していないようですが、
「入力が半角カナになっちゃうよ事件」(笑)のように
皆が必要だと思って投票すれば、正式リリースに組み込まれるかもしれません。
投票のしかたはこの辺のページが参考になります。
不満があればJIRAに投票
http://keimar.slmame.com/e65545.html
日本語入力おかしいと思ったらJiraで投票
http://movings.slmame.com/e65518.html
JIRAについて ~日本語環境のセカンドライフに困っていませんか - Chizzy Dilley のセカンドライフレポート
http://blogmag.ascii.jp/secondlife/2007/11/001060.html
Issue tracker-ja - Second Life Wiki
https://wiki.secondlife.com/wiki/Issue_tracker/ja
日本語で検索すると意外な発見があって面白いですよー
2007年12月19日
日本語検索(SVC-1020)パッチ書き終わり
日本語検索(SVC-1020)について解析してパッチを書き終わりました。
こんな漢字で日本語も通ります。


現在のビューアでの問題点ですが、
ビューアで日本語を受け取ってから検索サイトに投げる前に「URLエスケープ」という処理が必要ですが、
そこがうまく動いていませんでした。
英数字や一部の記号以外はUTF-8にして1バイトずつ%をつける必要があります。
例えば「あ」はUTF-8では「E38182」なので「%E3%81%82」に変換します。
この処理を行う中で、バイト列を1バイトずつ扱う部分があるのですが、
その処理の中で1バイトをcharで取り出してU32(つまりunsigned int)に変換している箇所があり、
そこで符号拡張によりおかしくなっていました。
http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E6%8B%A1%E5%BC%B5 などをご覧ください。
例えば、上記の「E3」は2進数では「1110 0011」ですが、先頭が1なため数字としては負の数になり、
内部で格納するときは「FFFFFFE3」2進数では「1111 1111 1111 1111 1111 1111 1110 0011」となります。
これを元に戻さないまま文字にしようとしていて「%FFFFFFE3」と変換されていました。
頭の%FFが空白のように表示されたため空振り時のメッセージとして「 FFFFE3」のように表示されました。
例えば「abあcd」で検索すると、「 Your search - ab FFFFE3 FFFF81 FFFF82cd - did not match anything」
のように、FFFFの前にだけ空白があくことが分かります。
解決方法ですが、必ず1バイトしか扱わないと分かっているため、0xFFでマスクして頭を0にしました。
ただ、ここ以外でもURLに動的引数を使うなど、URLエスケープが必要なケースがあるはずなので、
URLエスケープするための関数は別にしました。
あとは満足するまでテストケースを追加して、この説明を英訳してパッチと共に投げるだけですが、
JIRAのほうは投票が少ないようですね。
皆さん困っていないというよりは、日本語で検索できるはずだって知らないんじゃないでしょうか。
こんな漢字で日本語も通ります。


現在のビューアでの問題点ですが、
ビューアで日本語を受け取ってから検索サイトに投げる前に「URLエスケープ」という処理が必要ですが、
そこがうまく動いていませんでした。
英数字や一部の記号以外はUTF-8にして1バイトずつ%をつける必要があります。
例えば「あ」はUTF-8では「E38182」なので「%E3%81%82」に変換します。
この処理を行う中で、バイト列を1バイトずつ扱う部分があるのですが、
その処理の中で1バイトをcharで取り出してU32(つまりunsigned int)に変換している箇所があり、
そこで符号拡張によりおかしくなっていました。
http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E6%8B%A1%E5%BC%B5 などをご覧ください。
例えば、上記の「E3」は2進数では「1110 0011」ですが、先頭が1なため数字としては負の数になり、
内部で格納するときは「FFFFFFE3」2進数では「1111 1111 1111 1111 1111 1111 1110 0011」となります。
これを元に戻さないまま文字にしようとしていて「%FFFFFFE3」と変換されていました。
頭の%FFが空白のように表示されたため空振り時のメッセージとして「 FFFFE3」のように表示されました。
例えば「abあcd」で検索すると、「 Your search - ab FFFFE3 FFFF81 FFFF82cd - did not match anything」
のように、FFFFの前にだけ空白があくことが分かります。
解決方法ですが、必ず1バイトしか扱わないと分かっているため、0xFFでマスクして頭を0にしました。
ただ、ここ以外でもURLに動的引数を使うなど、URLエスケープが必要なケースがあるはずなので、
URLエスケープするための関数は別にしました。
あとは満足するまでテストケースを追加して、この説明を英訳してパッチと共に投げるだけですが、
JIRAのほうは投票が少ないようですね。
皆さん困っていないというよりは、日本語で検索できるはずだって知らないんじゃないでしょうか。