・コードはBig5(繁体中国語)と宣言されている。
・日本語環境で表示させてみると、8bit部分はBig5文字列の特徴を有している。
・その中にHTMLの「𘚟」の形式(数値文字参照)が大量に混ざり込んでいる。
これをどうやって読んだものかと考えました。
そのままWebブラウザに読ませてコード指定すれば簡単なのでしょうが、
安全性を考え、また環境を一時的に変更することの副作用を避けるため、
以下の手順でコード変換しました。
(1)Big5→シフトJISの変換ツール(既存)に喰わせる
(2)シフトJIS→ISO-2022-JPの変換ツール(=nkf)に喰わせる
(3)「数値文字参照」→utf-8の変換ツール(自作※)に喰わせる
(4)「nkf -sW」に喰わせる
※:http://www.lbm.go.jp/toda/library/unixmail.html#htmlcode
シフトJISやEUC-JPをutf-8と混在させると8bit同志で区別がつかないので、
ISO-2022-JPとutf-8が混在した形に持って行ったわけです。
この形なら、nkfが混乱すること無く各々を適切に変換してくれるだろう
と思ったところ、目論見通りでした。
手順(1)(2)では「数値文字参照」を単なる7bit文字列と認識しますし、
手順(3)ではISO-2022-JPを単に「変換対象外の文字列」と認識するので、
何れにおいても、目的以外の部分を勝手に変換されることはありません。
ちなみに、内容は「Big5で記述された日本語」でした。
かな文字の部分が全部「数値文字参照」になっていたというわけです。
#GB2312(簡体中国語)には「かな文字」があるんですが、Big5には無いようです。
最近、メールサーバにSpamフィルタが入って、
かなりの精度でSpamがサーバに留まるようになったんですが、
流石にこれは内容解析ができなかったようです^_^;
戸田 孝@滋賀県立琵琶湖博物館
to...@lbm.go.jp
In article <0712051049...@nanyanen.lbm.go.jp>
to...@lbm.go.jp writes:
> 先日、当方に到達したSpamが以下のようなものでした。
> ・コードはBig5(繁体中国語)と宣言されている。
> ・日本語環境で表示させてみると、8bit部分はBig5文字列の特徴を有している。
> ・その中にHTMLの「𘚟」の形式(数値文字参照)が大量に混ざり込んでいる。
> ちなみに、内容は「Big5で記述された日本語」でした。
> かな文字の部分が全部「数値文字参照」になっていたというわけです。
漢字の部分は、Big5 をそのまま使ってかなの部分を数値文字参照
にしたわけですね。敵も考えてはいますね。
ただ、「Big5 & 数値文字参照 & それがかな」というルールで弾く
のは簡単そう。単一ツールでできると便利ですけれど。
> #GB2312(簡体中国語)には「かな文字」があるんですが、Big5には無いようです。
そういう事情ですか。
> 最近、メールサーバにSpamフィルタが入って、
> かなりの精度でSpamがサーバに留まるようになったんですが、
> 流石にこれは内容解析ができなかったようです^_^;
私のベイズ・フィルタは、bi-gram 使っているはずだけど、それだ
と文字コード関係なくガリガリやってしまっているのでしょう。で
も、本当に聴いているかどうかはよくわからないなあ。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
文字コードを変換する際に、
unicodeを「中間コード」に使うシステムというのは多々あるだろうと思います。
#MicrosoftWordに一旦読み込ませる方法が該当するのかな?
その際、変換先コードで表現できない文字は数値文字参照にしてしまう
というのは、ごく普通にありそうな処理だと思うのですが、どうでしょう?
#MicrosoftWordの場合は、こうはならないと思いますが^_^;
だとすると、何も考えずに日本語文字列をBig5に変換したら、
上述のようになってしまいますよね。
戸田 孝@滋賀県立琵琶湖博物館
to...@lbm.go.jp
In article <0712080844...@nanyanen.lbm.go.jp>
to...@lbm.go.jp writes:
> >漢字の部分は、Big5 をそのまま使ってかなの部分を数値文字参照
> >にしたわけですね。敵も考えてはいますね。
> 本当に「考えた」のかどうか、疑問視してるんですけどね^_^;
> 文字コードを変換する際に、
> unicodeを「中間コード」に使うシステムというのは多々あるだろうと思います。
> #MicrosoftWordに一旦読み込ませる方法が該当するのかな?
> その際、変換先コードで表現できない文字は数値文字参照にしてしまう
> というのは、ごく普通にありそうな処理だと思うのですが、どうでしょう?
なるほど。面白い分析です。たしかにこれだと、あまり自然知能が
働いている感じがしません。
なぜ日本語文字列を Big5 に変換しようとしたのかという話が残り
ますね。単に spam filter をだませるのではないかと期待したと
いうよりは、Big5標準の環境の OS で編集したらそうなってしまっ
たという話かな。
学生の時、アメリカで何かの店で、英語通じない時に、店員さんが
助けを呼びにいったら中国人だったというのはありましたね。漢字
で筆談すれば通じたかもね。かな漢字変換なしに漢字が書けないと
いう話があるんだが。