web-dev-qa-db-ja.com

これらの奇妙な文字を変換するには? (ë、Ã、ì、ù、Ã)

私のページには、通常の文字の代わりにÃ"、Ã、ì、ù、Ãなどがよく表示されます。

ヘッダーページとMySQLエンコードにutf8を使用します。これはどのように起こりますか?

45
Leonardo

これらはutf-8エンコード文字です。 tf8_decode() を使用して、通常のISO-8859-1文字に変換します。

47
Ray

これらの文字が表示された場合は、おそらく 文字エンコードを適切に指定してください でした。これらの文字は、UTF-8マルチバイト文字列が ISO 8859-1 または Windows-1252 のようなシングルバイトエンコーディングで解釈された場合の結果であるためです。

この場合、ëは、Unicode文字ë(U + 00EB)をUTF-8で表す0xC3 0xABでエンコードできます。

25
Gumbo

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照合テーブルに挿入する前にテキストを正しくエンコードしませんでした。]

12
davidkonrad