2

PHP でアカウントを作成するための自動化されたスクリプトで特殊文字の問題を解決する方法に取り組んでいます。メールアドレスやその他の場所では特殊文字は不要なので、それらを取り除こうとしていますが、ユーザー名を他のユーザーに適切に表示する必要があるため、スクリプトにフィードする前に特殊文字を削除することはできません。

例: Jörgen Götz は電子メール アドレス jorgen.gotz@domain.com を取得する必要がありますが、ユーザー データベースでは、名前は Jörgen のままで、姓は Götz である必要があります。私が何を達成したいのかがはっきりしないことを願っています。

iconv() を試してみましたが、問題が発生しています。以下のコードを参照してください。

$utf8_sentence = 'ヴァイス、ゴールドマン、ゲーベル、ヴァイス、ゲーテ、ゲーテとゲッツ';

setlocale(LC_ALL, 'en_GB');

echo $trans_sentence = iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_sentence);

上記のコードは返されるはずです

ヴァイス、ゴールドマン、ゲーベル、ヴァイス、ゲーテ、ゲーテとゴッツ

しかし、代わりにそれは私に与えます

Weiss, Goldmann, G"obel, Weiss, G"othe, Goethe und G"otz

引用符がそこで何をしているのか理解できません。

Chrome と IE の両方で同じ結果が得られ、ページは charset="utf-8" を使用しています。

iconv() を使用する前に、strtr() を「不要な」文字の配列と一緒に使用してみましたが、文字列を前後に変換する必要があるたびに特殊文字の配列を設定する必要があるという解決策は好きではありません。

誰でも説明や解決策を提供できますか?

4

2 に答える 2

0

これをシステムに追加してみてください(Ubuntuのターミナル):

sudo locale-gen de_DE.UTF-8

次に、php スクリプトのロケールを変更します。

setlocale(LC_ALL, 'de_DE.UTF-8');

編集 (Windows セットアップ)

Windows Server では、ドイツ語の言語パックをインストールし、上記を次のように変更する必要があります。

setlocale(LC_ALL, 'germany');
于 2012-08-11T14:43:58.800 に答える
0

TRANSLIT は、要求された文字に似ている文字を見つけようとします。文字 ö はアスキーではないため、ウムラットと基本文字のペアに変更しています。

于 2012-11-05T09:08:02.313 に答える