MySQLデータベースにスウェーデン語の文字を保存するのに問題があります。users
それらを照合utf8-binで呼び出されるテーブルに格納したいと思います。utf8を使用していますが、文字å ä ö
はとして保存されÃ¥ ä ö
、理由はわかりません。データを取得してエコーすると、同じ出力が得られますが、の代わりに奇妙な文字が使用されå ä ö
ます。どんな助けでも大歓迎です。
4 に答える
電話
mysql_set_charset("utf8");
接続後、クエリを実行する前。
データベースの文字セットはストレージ専用であり、アプリとデータベース間の送信用ではありません。
エンコーディングに注意を払わなければならない場所がいくつかあります。
- データベース:すでにutf8照合を使用しているので、問題ありません
- データベース接続:
mysqli_set_charset
mysqliを使用している場合は、接続の文字セットを設定するために使用します。他のデータベースドライバにも同様の機能があります。 - ページの出力エンコーディング:HTTPヘッダーまたはメタタグを使用できます。安全を確保したい場合は、両方を指定してください。
データベース接続でスウェーデン語のエンコーディングが使用されていることと、ページ出力のエンコーディングも正しいことを確認する必要があります。エンコーディングが異なると、これらの問題の多くが発生します。文字エンコードについて詳しくは、こちらをご覧ください。
ここで考慮しなければならないいくつかのパラメーターがあります。これが現在および将来うまく機能するために。テキストとのすべての異なる相互作用は、同じエンコーディングである必要があります。db内でも(結合がうまく機能するためなど)。
挿入されたデータのエンコーディング(ページのヘッダーに設定されているか、挿入された場合はutf_8エンコーディング)。
dbテーブルでのエンコーディング(すべてにutf8_swedishをお勧めします)
ページ表示のエンコーディングはdbから生じます(これをヘッダーに設定します)
編集されたページのエンコーディング。異なるエンコーディングでドキュメントを開くことが可能です。あなたがそれに精通していない場合、これは大きな問題です。ドキュメントを開いて正しいエンコーディングで保存します。
以前は接続エンコーディングに関して問題がありましたが、これを正しく設定してください。しかし、今日では、変更により、数年前よりも小さな問題になっています。
いくつかのメモ。データがそのように保存されているか、またはphpmyademinなどを介して間違って表示されていることを確認しますか?print utf8_encode($ text)で印刷してみてください
または、utf8_decode()関数を使用すると、洞察が得られます...