2

PHP でiconvを使用して音訳をいじっています。特に、アクセント付きの文字を正規化し、他のスクリプトを UTF-8 からプレーン ASCII にローマライズしたいと考えています。

多くの文字 ( Ž->などZ) が機能する一方で、他の文字は奇妙な結果を出したり、エラーを発生させたりします。

たとえば、E ACUTE (U+00E9)は、取り除こうとしている分音符号を表そうとしているかのように、é先頭に一重引用符 (U+0027) を付けて ASCII に音訳します。e

$utf_8 = "\xC3\xA9"; // <- é
$ascii = iconv( 'UTF-8', 'ASCII//TRANSLIT', $utf_8 );
// returns "'e", not "e"

ラテン語以外のスクリプトはさらに悪く、たとえば、Σラテン語に音訳する必要があるギリシャ語シグマ (U+03A3)Sはまったく認識されず、エラーが発生します。

$utf_8 = "\xCE\xA3"; // <- Σ
$ascii = iconv( 'UTF-8', 'ASCII//TRANSLIT', $utf_8 );
// Raises notice: iconv(): Detected an illegal character in input string

最初のものにはほぼ対処できますが、「Σ」を「S」に音訳し、同等の文字を持つ他のスクリプトでこれを確実に行うにはどうすればよいですか?

ほとんどのヨーロッパ言語で機能する優れたソースがあれば、独自のテーブルを生成してもかまいません。

アクセント付きのラテン文字を正規化するのに役立つさまざまな照合テーブルを試しましたが、スクリプト間の音訳には機能しないことに注意してください。

4

2 に答える 2

0

私は似たようなことを試みました- それは主に Doctrine 1 コードに基づいており、完璧ではありません: しかし、私が投げたすべてのテストデータで動作するように見えました.

于 2013-07-26T08:39:03.033 に答える