4
4

1 に答える 1

5

あなたは難しい問題を選びました。Unicode 文字を入力するユーザーに、ASCII 自体を音訳するように指示することをお勧めします。彼らのためにそれを行うことは、彼らがあなたの音訳に同意しない場合にのみ彼らを怒らせるでしょう.

あなたがすることは、分音記号に大きな意味を与える人々にとって不快で不快なものになる可能性があります: http://en.wikipedia.org/wiki/Diacritic

どのような音訳戦略を使用しても、すべての人を満足させることはできません。人によって文字の意味が異なるためです。ある人を喜ばせる音訳は、別の人を怒らせます。誰もが Unicode で好きな文字を使用できるようにしない限り、誰もが幸せになることはありません。

しかし、人生は耳障りで攻撃的です。

この PHP コード:

function toASCII( $str )
{
    return strtr(utf8_decode($str),
        utf8_decode(
        'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'),
        'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
}

上記の PHP 関数が行うことは、utf8_decode の最初のパラメーターの各 Unicode 文字を置き換え、utf8_decode の 2 番目のパラメーターの対応する文字に置き換えることです。

たとえば、UnicodeÀは ASCIIAに音訳され、åは に変換されaます。ASCII 文字に音訳すると思われる Unicode 文字ごとに、これを指定する必要があります。その他については、それらを削除するか、別の文字変換アルゴリズムを実行します。

他に 95,221 文字を調べる必要があり、ASCII に音訳される可能性があります。「いつになったらあるの?」という実存的なゲームにAなります。Aクリンゴンの文字と A のような道路地図標識はどうですか? 魚のキャラクターはa. 誰が何を言うのですか?

これは大変な作業ですが、データベース入力をクリーンアップする場合は、文字のホワイト リストを作成し、他の野蛮人をブロックして堀に入れないようにする必要があります。これが唯一の信頼できる方法です。

于 2013-02-11T15:26:47.247 に答える