26

私のテーブル文字セットはutf8であり、照合はutf8です。これで次のコードが得られます。

   $mysqli = new mysqli("localhost", "root", "", "Amoozeshgah");

            if (mysqli_connect_errno()) {
                  printf("Connect failed: %s\n", mysqli_connect_error());

            }
          if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}
        mysql_set_charset('utf8');
            if ($stmt = $mysqli->prepare("SELECT About_Title FROM Tbl_About WHERE About_Id=?")) {
                $city = 8;

               /* bind parameters for markers */
                $stmt->bind_param("s", $city);

              /* execute query */
                $stmt->execute();

               /* bind result variables */

                  $result = $stmt->get_result();

             /* fetch value */
            while ($myrow = $result->fetch_assoc()) {

        // use your $myrow array as you would with any other fetch
        printf("%s is in district %s\n", $city, $myrow['About_Title']);
        print("shod");

    }

しかし、出力は次のとおりです。

Current character set: utf8 8 is in district نتمنتشس shod

私に何ができる?編集:私は置き換えました:

if (!$mysqli->set_charset("utf8")) {
        printf("Error loading character set utf8: %s\n", $mysqli->error);
    } else {
        printf("Current character set: %s\n", $mysqli->character_set_name());
    }
            mysql_set_charset('utf8');

$mysqli->set_charset("utf8")

しかし、違いはありません。

4

6 に答える 6

57

に置き換えmysql_set_charset('utf8');てください$mysqli->set_charset("utf8"):-)

于 2012-04-26T11:03:53.753 に答える
25
or mysqli_set_charset($this->mysqli,"utf8");
mysqli_set_charset($conn,"utf8");
于 2014-02-12T12:33:49.180 に答える
1

コードで「json_encode」を使用する場合に備えて、次に例を示します。

json_encode($rows);

次のように変更するだけです。

json_encode($rows,JSON_UNESCAPED_UNICODE);
于 2020-07-08T08:42:39.407 に答える
0

他の誰かを助けるかもしれない興味深いシナリオ。技術的な詳細/説明はなく、代わりに正しい方向へのプッシュ/手がかり。

シナリオ:成功した/確認済みのIPNPayPalトランザクションに基づくユーザーアカウントのリモート自動作成。Mysqli Queryはuserおよびusermetaデータを作成しますが、そのデータの値には非表示のフォーマット文字が含まれており、フォーム処理で呼び出されたそのデータの使用が無効になります。既存のDBテーブルを変更/変更することなく、非常にシンプルなソリューション。基本的に、これにより、データがASCII印刷可能文字のみであり、$ mysqli-> set_charset( "utf8");を使用することも保証されます。「ASCIIクリーン」で処理および入力するデータを準備しているため、それほど重要ではありません。

    $create_ipn = $mysqli->prepare("INSERT INTO xxx_somewhere (some_ipn_parameter , email, domain, item) VALUES (?, ?, ?, ?)");
    $create_ipn->bind_param("ssss", $some_ipn_parameter, $email, $domain, $item);

    $some_ipn_parameter = preg_replace( '/[^\x01-\x7F]/', "", 'the_actual_ipn_data' );
    $email = 'edward@ait-pro.com';
    $domain = '';
    $item = 'Test';
    $create_ipn->execute();         
于 2015-10-20T22:12:36.820 に答える
0

データベースからデータをフェッチするときは、データを正しく取得するだけでなく、ページに正しく表示する必要があるため、ページヘッダーでUTF-8エンコーディングを使用してみてください。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta charset="utf-8">

Rohit Kumar Choudharyのおかげで、それが私の問題と解決策です。

于 2016-10-21T03:31:14.827 に答える
-1

phpファイルで、コードの先頭に次を追加します

header('Content-Type: text/plain; charset=utf-8');
于 2018-07-02T08:41:35.057 に答える