私のテーブル文字セットは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")
違いはありません。
mysql_set_charset('utf8');
を$mysqli->set_charset("utf8")
に置き換えてください:-)
or mysqli_set_charset($this->mysqli,"utf8");
mysqli_set_charset($conn,"utf8");
他の人を助ける興味深いシナリオ。技術的な詳細/説明はなく、代わりに正しい方向へのプッシュ/ヒントのみです。
シナリオ:成功/検証済みIPN Paypalトランザクションに基づいたユーザーアカウントのリモート自動作成。 Mysqli Queryはユーザーおよびユーザーメタデータを作成しますが、そのデータの値には非表示のフォーマット文字が含まれ、フォーム処理で呼び出されるそのデータの使用を無効にします。既存のDBテーブルを変更/変更することなく、非常にシンプルなソリューション。基本的に、これは、データがASCII印刷可能文字であり、$ mysqli-> set_charset( "utf8")を使用することさえあることを保証します。処理して入力するデータを準備しているので、それほど重要ではありません「ASCII clean」。
$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 = '[email protected]';
$domain = '';
$item = 'Test';
$create_ipn->execute();
データベースからデータを取得する場合、データを正しく取得するだけでなく、ページに正しく表示する必要があるため、ページヘッダーでUTF-8エンコードを使用してみてください。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
Rohit Kumar Choudharyに感謝します。