0

ユーザーが入力したデータに htmlentities() を使用していますが、ローカル サーバーでは問題はありません。ただし、Web ホスティング サーバーでコードを実行すると、文字エンコーディングがおかしくなっているようです。

例 (文字列åäö áàâを使用);

Local server
[message] => åäö áàâ

Output = åäö áàâ

ただし、私のWebホスティングサーバーでの結果は

Web hosting server
[message] => åäö áàâ

Output = åäö áà â

htmlentities() を文字列に適用すると、「文字セットの問題」が発生します。どうすれば修正できますか?

4

3 に答える 3

3

私はそれを修正しましたが、これが問題の原因でした。

php.netによると、5.4.0 より前のバージョンの PHP では、デフォルトのエンコーディングとして「ISO-8859-1」が使用されています。私がしなければならなかったのは、単に「UTF-8」に変更することだけでした。

htmlentities($string, ENT_COMPAT | ENT_HTML401, 'UTF-8');

(これは私が試した最初のことでしたが、「utf-8」を小文字で書きましたが機能しませんでした!!)

于 2013-07-24T01:55:03.610 に答える
0

Unicode では、複数のバイトを使用して各文字を表します。フィルタリングしない限り、PHP は両方のバイトを別々の文字として出力します。

試す

htmlentities(mb_convert_encoding($s,'utf8'));
于 2013-07-24T00:32:40.253 に答える
0

PHP ページのエンコーディング (ページ自体)が と同じ文字セットであることを確認してhtmlentities($string, ENT_QUOTES, 'UTF-8')くださいUTF-8。また、php.ini で確認するか、 beforedefault_charset = '';でコメントアウトしてください。;default_charset

于 2013-07-24T00:34:50.090 に答える