1
4

2 に答える 2

3

すでに持っているデータは、おそらく通過する必要がありますutf8_decode()(ではありませんutf8_encode())。

将来的にスムーズな航海を確保するには、パイプ全体がUTF-8であることを確認する必要があります。悲しいことに、これは自明ではありません。私の頭のてっぺんから、チェックする必要がある場所:

  • HTTPデーモンのデフォルトのエンコーディング
    • Apacheの場合は、.htaccessまたはhttpd.confに追加します。AddDefaultCharset UTF-8
  • PHPのdefault_encoding
    • .htaccessまたはサーバー構成を追加します。php_value default_charset "UTF-8"
  • HTTPのヘッダーコンテンツタイプ文字セット
    • header('Content-Type: text/html; charset=UTF-8');
  • HTMLのメタコンテンツタイプの文字セット
    • <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  • PHPのMySQL接続文字セット
    • mysql_set_charset('utf8');
  • MySQLのデータベースのデフォルトの文字セットと照合
    • 文字セットutf8と照合を使用するutf8_general_ci
  • MySQLのテーブルと列の文字セット
    • 文字セットutf8と照合を使用するutf8_general_ci

また、不要なHTMLまたはXMLを含む可能性のある値を出力する必要がある場合はhtmlentities($var, ENT_COMPAT, 'UTF-8');、単にではなくを使用してください。htmlentities($var);

また、可能な場合は、やなどの関数を使用してmb_*ください。mb_strlen()mb_substr()

于 2013-01-25T19:58:03.000 に答える
-1

テーブルの照合を次のように変更しますlatin1_swedish_ci

special char を使用すると、次のようなこともできます

mysql からのデータを表示するため

$str=html_entity_decode(stripslashes($rows[4]));

特殊文字を含むデータをmysqlに挿入するため

$var_name=htmlentities(mysql_real_escape_string($detail));
于 2013-01-23T06:05:02.953 に答える