3

ドメインの確認、登録などを行うサイトを作っているので、IDN に準拠させなければなりません。今、私はこのようなものを持っています:

echo $domain;       
$domain = idn_to_ascii($domain);
echo $domain;
$domain = idn_to_utf8($domain);
echo $domain;

そして、これを取得しています:

testing123ásd123 xn--testing123sd123-wjb testing123ĂĄsd123

ご覧のとおり、デコードされた文字列は元の文字列と同じではありません

私は使用してみました:

$charset="UTF-8";
echo $domain;       
$domain = idn_to_ascii($domain, $charset);
echo $domain;
$domain = idn_to_utf8($domain);
echo $domain;

そして、私はまったく同じになりました(エンコードされた文字列がわずかに異なることを除いて)

何か案は?

編集:問題は解決しました!文字列をちっぽけなコードに変換する際のこの問題 (PHP では、phlyLabs の punycode 文字列コンバーターを使用) では 、元の文字列は iso-8859-2 で、UTF-8 でデコードされました。 2 繰り返しますが、Google がそれを手伝ってくれます。モッドはありますか?質問はどうすればいいですか?閉じる、消す?このままで?

4

1 に答える 1

3

すでに指摘したように、UTF8以外のドキュメントに表示されている文字ĂĄのUTF8表現であるように見えます。á

iconv()を使用して、文字セット間で変換できます。ただし、Unicode以外の文字セットは国際文字の完全なセットを表すことができないため、欠落している文字をHTMLエンティティに変換する必要があることに注意してください。例えば:

<?php

$domain = idn_to_utf8($domain);
echo htmlentities($domain, ENT_COMPAT, 'UTF-8');

?>

いずれにせよ、プロジェクト全体でUTF-8を使用する方がおそらく簡単でしょう。

于 2010-07-11T11:07:04.177 に答える