Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: テスト:UTF-8の query 対応



寺西です。

knok@xxxxxxxxxxxxx wrote:
> 
> At Thu, 29 Jan 2004 06:57:14 +0900,
> Tadamasa Teranishi wrote:
> > ややコストの高い方法ではありますが、認識力を上げる修正を施しました。
> > (たぶん、lv, nkf, iconv の自動認識と同程度の能力になっているかと
> > 思います。)
> 
>   順に iconv を試みる、という手法ですね。かなり確実だと思います。

基本的にはそうです。実際には変換できたものの文字数をカウントして、
もっとも文字数の少ないものを採用しています。

これは、文字化けは文字数が増える方向で起こりやすいという特徴を
利用したものです。(当然のことならが、それが必ずしも正しいという
ことは保障されていませんが、おおむね良好の結果が得られています。)

例) eucJP の「空海」を utf8 の「腥堺儀」と誤認しない。
どちらも e7 a9 ba e6 b5 b7 ですが、この場合は文字数の少ない
eucJP の「空海」と認識します。これは lv, nkf, iconv の自動認識の
結果と一致します。

> > テスト用スクリプトや autotools 関係の修正といった準備が
> > 整えば、#ifdef TEST_UTF8 〜 #endif をはずそうかと思います。
> 
>   うう、すいません... この週末に autotools の方も進めようと思います。

いえいえ、autotools 関係の話は、たぶん野首さんの話とは別件に
なります。

これは今回 GNU libiconv を使うパッチを作ったものですから、
下手に commit すると、誤動作の元になるのは確実です。
そのため、OS 付属の iconv と GNU libiconv を区別して、GNU libiconv 
がない場合は、コンパイルできないような仕組みをいれないといけなく
なっています。
その辺りの問題を私(でなくてももちろんいいのですが)が解決しないと
いけない話です。ただ、あまりその辺りの解決方法の知識がないので、
しばらくは調査に時間がかかりそうなので、#ifdef TEST_UTF8 〜 #endif
をつけて、普通にコンパイルする分には支障がないようにしようと
思っています。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E