Tasuku SUENAGA
a****@razil*****
2006年 10月 20日 (金) 16:19:30 JST
ブラジルの末永です。 現在、UTF-8についてはNFKCという結構強めの正規化をかけています。 ○付き2桁数字についてもおそらくきちんと正規化されると思います。 Shift-JISとEUC-JPについても、 NFKCと同等の正規化を実現できるとうれしいと思っていますが、 まだ実現できていません。 誰かstr.cとutil/unicode/nkfc.rbをいじってくれないかな… 現在のnormalize_sjisの実装は、 一つの文字が正規化後に複数の文字に対応することを想定していないので、 確かに○付き文字+2桁数字の正規化はキビしいですね… > (*d++とlength++やったりとか、めちゃくちゃしてます) 大きく手を入れないのなら、その方向で良いと思います。 *d++してlength++してる箇所で if (cp) { *cp++ = sen_str_digit; } も実行してやればうまく行きそうに思えます。 もしダメだったら、パッチを見せて頂けると何か分かるかも知れません。 島村 優太郎 wrote: > お久しぶりです、島村です。 > > 携帯向けのコンテンツに使用するため、携帯の絵文 > 字の数字を正規化したり、 > http://www.mainichi-msn.co.jp/kurashi/katei/news/ > 20061005ddm013100062000c.html > こんな感じで小文字にして投稿される文字を勝手に > 正規化したりしてます。 > > 携帯系は検索に優しくない投稿だらけで、 > しかも新しい言葉がどんどんでてくるのでN-GRAMしか > 選択肢がないし、といいことがありません。 > ひらがな/カタカナの小文字を大文字にするのもだ > いぶ無茶なのですが、 > 携帯系はこれを行った方が逆に良い感じになってい > ます。 > > そんなわけで./lib/str.cの方をちょこちょこいじっ > て、記号の正規化を行っているのですが、 > ひとつわからないところがあるのでお力を貸してい > ただきたいと思い、投稿させていただきます。。 > > 記号の→①これ系のお話です。 > > sjisで見ているのですが、 > ①(0x8740)〜⑨(0x8748)までは > switch (c1 & 0x0f)の > case 7 :の部分で > (./lib/str.c:748) > > if (0x40 <= c2 && c2 <= 0x48) { > ctype = sen_str_others; > *d = c2 - 0x870f; > } > > として、半角数字に正規化しているのですが、 > ⑩〜⑳の間の場合、(例として⑰) > 1(0x31)と7(0x37)にわけて*dに入れる時、 > sen_str_digitのフラグ等も追加して行かなきゃいけな > いと思います。 > > そこら辺がよくわかってないんですが‥ > (わかんないならやるな、って感じですが) > > else if(0x49 <= c2 && c2 <= 0x53) { // ⑩〜⑳の場合 > で、 > switch(c2){ > ‥ > case 0x50: > ここで1(0x31)と7(0x37)と1文字1文字で認識させたい場 > 合、 > (共にsen_str_digit)どうすればよいのでしょうか? > > 普通に*d++で入れていくと0x3130という文字になって > しまいますし、 > ここの部分だけがどうあがいてもうまくいかないで > す。 > (*d++とlength++やったりとか、めちゃくちゃしてます) > > C言語の基本かもしれないのですが、よろしくお願 > いします。。 > > /* > 余談ですが、 > 最近は"ごまちゃん"等の"ゃ"をア行にして"ごまちあ > ん"としたりするのが多くなってます。 > ご丁寧にあをカタカナのアにして"ごまちアん"とす > る人もいるので、 > いっそのことカタカナとひらがなも正規化したくな > ります。 > 携帯でインターネットが広まるにつれて、日本語が > どんどんおかしくなってるような。 > */ > > > ------------------☆ > 島村 優太郎 > ml****@ryne***** > ------------------☆ > > > _______________________________________________ > Senna-dev mailing list > Senna****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/senna-dev