0

私のphpファイルはUTF-8エンコーディングであり、アプリケーションに安全に送信するためにデータをエンコードしようとしていますが、一部の文字が正しくエンコードされません.

$text = "Š";
$text = urlencode(utf8_decode($text));
echo $text;

%3F をエコーし​​ますが、ここ (http://www.w3schools.com/tags/ref_urlencode.asp) にある w3c urlencoding リファレンスによると、「Š」は %8A に変換する必要があります。Php 自身のリファレンスにも、どのリファレンスを使用しているかは記載されていません。これは、エンコード/デコードの問題か、それとも何か他の問題でしょうか?

4

1 に答える 1

0

utf8_decode は UTF-8 から ISO-8859-1 への変換を試みますが、Š は ISO-8859-1 には存在しません。'?' を取得します。(= %3F)、置換文字。

CP1252 (おそらく他のもの) に存在し、16 進コード 8A の下にあります。そう:

$text = urlencode(iconv('UTF-8', 'CP1252', $text));

あなたが期待するものを与えるべきです。実際、Unicode 文字列をデコードするべきではありません。

于 2012-12-10T10:35:18.347 に答える