55

私のページには、通常の文字の代わりに、ã、ã、ã¬、ã¹、ã などの文字が表示されることがよくあります。

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

4

4 に答える 4

47

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

于 2011-02-26T15:28:27.593 に答える
29

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

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

于 2011-02-26T15:47:49.490 に答える
14

便利な解決策ですutf8_decodeが、テーブル自体のエンコード エラーを修正することを好みます。私の意見では、コードに「ハック」を作成するよりも、悪い文字自体を修正する方が適切です。replaceテーブルのフィールドでa を実行するだけです。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>, "ù", "ù")

はmysql<table>テーブル<field>の名前で、 はテーブル内の列の名前です。Windows-1252 からutf -8 文字への一般的に不適切なエンコードの非常に優れたチェックリストを次に示します。

文字を SQL に置き換える前に、必ずテーブルをバックアップしてください

[これは非常に古い質問への回答であることは知っていますが、再び問題に直面していました。一部の古い Windows マシンは、テキストを utf8_general_ci 照合テーブルに挿入する前に正しくエンコードしませんでした。]

于 2014-12-04T09:20:59.877 に答える