From: Akihiro Yamauchi Date: 1999-07-01T22:06:39+09:00 Subject: [ruby-list:15178] kconv こんばんは。 日本語の処理についての質問です。リファレンスは読んだんですがどうもよくわ かりません(ほかのメールを読んでいるとレベルの高さにびびってしまいますが、 ruby-devじゃないからいいかな)。 --- #!/usr/local/bin/ruby require "kconv" word = 'カタカナ' kword = Kconv.tosjis(word) key = 'タ' kkey = Kconv.tosjis(key) if kword =~ /#{kkey}/s print kword end --- 上のプログラムはwindows95の環境(Ruby 1.2.6)で、なぜ動かないんでしょう? スクリプトがおかしい可能性が大きいのですが。 /#{kkey}/sにすると premature end of regular expression: /・ (RegxpError)。 またnをつけると最後の文字の1バイトが削られるので「カタカ・」のように化け ます。ためしに「カタカナa」とかしてみるとうまくいく。 ためしにkconvでの変換をしないで/#{kkey}/のオプションもはずすとうまくいっ てしまいました。 CGIを作っていたので、日本語のコードを気にしていたのですが、会社では Windowsしかないのであんまり気にしないほうがいいのかもしれません。 で、家に帰ってきて、Linux上で試してみました。Rubyは1.3.4-990531。 1. kconvで変換しない 正規表現のオプションに関係なく全部 unmatched。 2. kconvでeucに オプションに関係なく全部OK。 3. kconvでjisに 全部 unmatched。 4. kconvでsjisに 全部OK。 Rubyの1.2.xと1.3.xの違いなのか、OSの違いなのか。 jcode.rbは使い方がわからないので試してません。 ところでリファレンスの正規表現の説明のところで、n,e,sオプションというの がのってますが、nって何でしょう? e => euc, s => sjis, とするとn => jis なのかな、やっぱり。nihongoのn? -- Akihiro Yamauchi e-mail: aygoofy@kt.rim.or.jp URL: http://www.kt.rim.or.jp/~aygoofy/index.html