0

ユーザーがテキストエリアにテキストを入力して保存することを受け入れています(単純な.txtファイルに保存され、htmlも含まれています)。次に、file_get_contents()を使用してテキストファイルを取得し、エコーします。まれな文字でテストする場合を除いて、これは正常に機能します。たとえば、クローバー(♧)でテストすると、テキストファイルに問題なく保存されますが、表示すると、☀のようになります。ほとんどすべてのまれな記号の前にâが付いています。これはエンコーディングの問題だと思いますが、どこから始めればよいのかわかりません。具体的には、ユーザー入力が正しく表示されるようにするにはどうすればよいですか?ありがとう。

4

3 に答える 3

0

ユーザー入力が正しく表示されるようにするにはどうすればよいですか?`

UTF-8でエンコードされた文字列のみを受け入れる

PHPには、 mb_check_encodingという便利な関数が付属しています—文字列が指定されたエンコーディングに対して有効かどうかを確認しますこの関数を使用して、ユーザー入力が「まれ」でないかどうかを確認します

   if(mb_check_encoding($string, 'UTF-8'))
   {
       // do stuff, input is UTF-8
   }
   else 
   {
        // input is not UTF-8
   }
于 2012-06-16T02:54:44.633 に答える
0

エコーする直前に、特殊文字をHTMLエンティティに変換できます。

htmlentities($mytext);

次に、ブラウザはそれらをもう一方の端で正しい文字に変換し直します。2つの小さな欠点があります。

  1. HTMLエンティティは数バイトの余分なスペースを占有します
  2. テキストファイルに保存している場合、HTMLエンティティは正しい文字に変換されません。

それは理想的ではないかもしれませんが、それは仕事をするはずです。

于 2012-06-17T10:33:07.230 に答える
0

これを試して..

PHPで定義されたヘッダーコンテンツタイプ

 header("content-type: text/html; charset=utf-8");

http://hiox.org/33451-non-standard-characters-handle-in-php.php

于 2012-06-16T05:15:47.853 に答える