FineView Software Labs




特殊文字 (スペシャルキャラクター)

アスパラフィルターは外国語判別処理をしています。 もちろん、件名や差出人がISO-2022-JPやISO-8859-*でエンコードされていれば 簡単なのですけど・・ エンコードされていないときでも外国語判別処理を行えるようになってます。

特殊文字を調べたときの情報を少しだけまとめてみました。

□ スペイン語の特殊文字とASCIIコード
特殊文字使用してる単語などASCIIコードHTMLコード
ñespañol (スペインの) señorita (お嬢さん)0xF1ñ
Ñ0xD1Ñ
áchampán (シャンパン) fábrica (工場) rápido (速い)0xE1á
Á0xC1Á
íSí (Yes) esquí (スキー) compañía (会社)0xEDí
Í0xCDÍ
úfútbol (フットボール) música (音楽) último (最新の)0xFAú
Ú0xDAÚ
écafé (カフェ) teléfono (電話)0xE9é
É0xC9É
óAdiós( Good-bye) estación (駅) ópera (オペラ)0xF3ó
Ó0xD3Ó
¿¿ Perdón ? (Excuse me)0xBF¿
¡¡ Hola ! (Hi)0xA1¡


□ スペイン語特殊文字とシフトJIS
スペイン語特殊文字シフトJIS
シングルバイト
0x80〜0xFFの部分の一部
上記ASCIIコード参照
マルチバイト
第1バイトの範囲 0x81〜0x9F, 0xE0〜0xEF
第2バイトの範囲 0x40〜0x7E, 0x80〜0xFC

téléphoneという単語は日本語環境では、次のように表示されます。
t駘駱hone

これは、é(0xE9)がシフトJISの第1バイトで、 それに続く l(0x6C)や e(0x70)がシフトJIS第2バイトだからです。
él(0xE9 0x6C) → 駘
ép(0xE9 0x70) → 駱

スペイン語のASCIIコードがシフトJISの第1バイトと同じものはéの他に、 á(0xE1)とí(0xED)があります。

0xE1(á) 0xE9(é) 0xED(í)のいずれかで始まり、 それに続くバイトが0x40〜0x7E, 0x80〜0xFCのときシフトJISと判断され漢字で表示され てしまいます。

ここで例にあげた「t駘駱hone」は英字とシフトJISが混在した文字列です。 これは「SPAMメール」や「F1グランプリ」「B5ノート」といった単語と同類ということです。 シフトJISなら日本語という単純な判別処理を行なうと・・ スペイン語の文字化けを含め全て日本語と判別してしまうことになります。

□ 良く見かける é
スペイン語は詳しくありませんが、いろいろとテストしていてéを含む単語は多いように 感じました。またこのéはスペイン語のほかにフランス語、ポルトガル語などでも使われます。
(良く見るといっても é を直接見るわけではなく、 バイナリーレベルでE9を良く見るということです。)

以下に、このéと英字小文字を組み合わせた漢字を表示してみました。 ヨーロッパ言語が文字化けしたときに良く見るような漢字が並んでいると思います。
éと英字小文字の組み合わせ(a〜z順に26文字並んでいます。)
饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷

実際にはéx, ézという綴りはないように思うので、 良く現れる文字は限られてくると思います。
化けて出やすい文字: éc(馗)、éo(駮)、ía(a)

英字のASCIIコードは、A-Z(0x41-0x5A), a-z(0x61-0x7A)です。 .(0x2E),(0x2C)?(0x3F) (0x20)

□ スペイン語判別を行うにあたって
実際にスペイン語を判別する場合、ヨーロッパ圏で使われる記号に対する配慮も必要です。 “”のようなダブルクォートもそうですし、 ユーロ(€)やポンド(£)などといった記号もそうです。

áíéに英字大文字が続くことも考えにくいです。英字小文字との組み合わせや、 文末の'.','?',','やスペース' 'などとの組み合わせが考えられます。

「特殊文字の直後に特殊文字が続くことはないのでは?」っと思って調べてみましたが、 特殊文字が連続する単語も存在するようです。

スペイン語特殊文字が連続する単語
例) compañía
特殊文字が連続する単語が存在しなければ、判別アルゴリズムもより簡単になるのですが・・
甘い考えでした。

□ 最後に
何故最初にスペイン語を選んだかというと、スペイン語を使用している国が多いからです。(=使用人口も多い)
(アルゼンチン、ウルグアイ、エクアドル、エルサルバドル、キューバ、グアテマラ、コスタリカ、コロンビア、スペイン、赤道ギニア、チリ、ドミニカ共和国、ニカラグア、パナマ、パラグアイ、ベネズエラ、ペルー、ボリビア、ホンジュラス、メキシコ)

言語別インターネット人口を扱っているホームページを見つけました。
図録▽世界の言語別インターネット人口
言語別インターネット人口では、英語、中国語、日本語、スペイン語・・となっています。 これはスパム送信国の言語比率と関係があるかもしれません。



覚え書き

□ フランス語の特殊文字とASCIIコード
特殊文字使用してる単語などASCIIコードHTMLコード
â-0xE2â
Â0xC2Â
î-0xEEî
Î0xCEÎ
û-0xFBû
Û0xDBÛ
ê-0xEAê
Ê0xCAÊ
ô-0xF4ô
Ô0xD4Ô
à-0xE0à
À0xC0À
ù-0xF9ù
Ù0xD9Ù
è-0xE8è
È0xC8È
é-0xE9é
É0xC9É
ç-0xE7ç
Ç0xC7Ç
ë-0xEBë
Ë0xCBË
ï-0xEFï
Ï0xCFÏ
ü-0xFCü
Ü0xDCÜ
œ-0x9Cœ
Œ-0x8CŒ

□ ポルトガル語の特殊文字とASCIIコード

wiki ポルトガル語のアルファベットを参考に
特殊文字使用してる単語などASCIIコードHTMLコード
á-0xE1á
Á0xC1Á
í-0xEDí
Í0xCDÍ
ú-0xFAú
Ú0xDAÚ
é-0xE9é
É0xC9É
ó-0xF3ó
Ó0xD3Ó
â-0xE2â
Â0xC2Â
ê-0xEAê
Ê0xCAÊ
ô-0xF4ô
Ô0xD4Ô
ã-0xE3ã
Ã0xC3Ã
õ-0xF5õ
Õ0xD5Õ
à-0xE0à
À0xC0À
ü-0xFCü
Ü0xDCÜ
ç-0xE7ç
Ç0xC7Ç

□ ドイツ語の特殊文字とASCIIコード

特殊文字は、a, u, oのウムラウトとエスツェット(ß)のみ。
特殊文字使用してる単語などASCIIコードHTMLコード
ä-0xE4ä
Ä0xC4Ä
ü-0xFCü
Ü0xDCÜ
ö-0xF6ö
Ö0xD6Ö
ß-0xDFß