2

私は非常に奇妙な行動を経験しています。UTF8 文字 (特に 'ő' または 'ű' ハンガリー文字) で挿入を実行すると、? が挿入されます。キャラクターの代わりに。ただし、クエリに渡す直前にエコーすると、正しい文字が表示されます。

私がやった事:

  • 可能なすべての照合、mysql テーブルとデータベースの文字セットを UTF8 に設定しました。
  • 私は電話したmysql_query("SET NAMES 'UTF8'");
  • 私は電話したmysql_query("SET CHARACTER SET UTF8");
  • 私はウェブサイトのエンコーディングを次のように設定しました:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

意図したとおりに機能するもの:

  • PHPマイアドミン
  • テーブルからの特殊文字のエコー

localhost サーバーで動作しています。非ローカル サーバーのデフォルトのエンコーディングは ISO-8859-1 で、変更できません。

4

1 に答える 1

1

もし、あんたが

utf-81 -フォームを含むhtml ページの lang エンコーディングを設定します
2 - フォームを使用して、関連する MySQL db テーブルに入力を入力します
3 - すべての照合をutf8_unicode_ciMySQL に設定します (テーブルと行の照合)
4 - 許可がある場合MySQL DB照合を次のように設定することもできます utf8_unicode_ci

その後、mySQL レコードにもエンティティは表示されません

これは私が使用している私のソリューションであり、多くのユニコード文字を持つ母国語でも問題はありません。

以下に、私の db 接続 php コードと推奨事項を紹介します (準備済みステートメントを使用します。http://php.net/manual/en/mysqli.quickstart.prepared-statements.phpを確認してください) 。

//mysql bağlantısı
global $db_baglanti;
$db_baglanti = new mysqli(vt_host, vt_user, vt_password, vt_name);
if ($db_baglanti->connect_errno) 
{
    echo "MySQL bağlantısı kurulamadı: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$db_baglanti->set_charset("utf8")) 
{
    printf("utf8 karakter setinin yüklenmesinde problem oluştu: %s\n", $db_baglanti->error);
} 
else 
{
    $db_baglanti->set_charset("utf8");
}

あなたにとっての主なポイントは、上記のリストの2番だと思います。

また、すでにドキュメントがある場合は、ドキュメントのメタタグを編集して charset 宣言を行い、 notepad++ を使用しencoding>convert to UTF-8 without BOMてドキュメントを保存し、UTF-8 文字を安全に使用してください。(これは、関連する可能性のある HTML 側の問題の解決策ですBOM)

于 2014-03-26T18:51:42.593 に答える