私のページには、通常の文字の代わりにÃ"、Ã、ì、ù、Ãなどがよく表示されます。
ヘッダーページとMySQLエンコードにutf8を使用します。これはどのように起こりますか?
これらはutf-8エンコード文字です。 tf8_decode() を使用して、通常のISO-8859-1文字に変換します。
これらの文字が表示された場合は、おそらく 文字エンコードを適切に指定してください でした。これらの文字は、UTF-8マルチバイト文字列が ISO 8859-1 または Windows-1252 のようなシングルバイトエンコーディングで解釈された場合の結果であるためです。
この場合、ë
は、Unicode文字ë
(U + 00EB)をUTF-8で表す0xC3 0xABでエンコードできます。
utf8_decode
は便利なソリューションですが、テーブル自体のエンコードエラーを修正することを好みます。私の意見では、コードに「ハッキング」を行うよりも悪い文字自体を修正する方が良いと思います。テーブルのフィールドで replace
を実行するだけです。 OPからのエンコードされた不良文字を修正するには:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
<table>
はmysqlテーブルの名前であり、<field>
はテーブル内の列の名前です。以下は、一般的にエンコードされたwindows-1252からutf-8の文字に対する非常に良いチェックリストです-> Debuging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters 。
文字をSQL に置き換える前にテーブルをバックアップすることを忘れないでください!
[これは非常に古い質問に対する答えであることは知っていますが、もう一度問題に直面していました。いくつかの古いWindowsマシンは、utf8_general_ci照合テーブルに挿入する前にテキストを正しくエンコードしませんでした。]