非unicodeに変換するphp&mysql
質問
私たちのウェブサイトにはこうしたキャラクターがあります:fãƒâ©mnyomãƒâ³
それは別の言語で入力された通りの住所です(どちらを知りませんが)。これがDBのセットアップです:
mysql 4.1.2log
charset cp1252 West European (latin1)
私はPHPを使用していますが、mbstrings()はありません(このアドレスで文字列変換は行いませんが、ただエコーだけです)。
MySQL charsetをCP1252からUTF-8に変更し、次のようなものを使用したことを確認した場合 header( 'Content-Type: text/html; charset=UTF-8' );
それは私の状況を改善しますか?または、データはCP1252チャーセットで保存されており、私にできることは何もないので、データはhosedされていますか?元のデータベースは2002年に作成され、それ以来使用/拡張されています。サーバーをアップグレードし、ダンプを再輸入しましたが、恥ずかしいことに、慈善セットにあまり考えを与えないことを認めています。
私がホースを持っている場合、私はおそらくそれらのフィールドのテキストを削除するだけですが、私は今後Unicodeをサポートしたいので、私が発行した場合 ALTER database_name DEFAULT CHARACTER SET utf8;
これにより、将来のマルチバイトエンコーディングが正しく保存され、少なくとも方程式から保存されていることを確認しますか(PHPを心配させます)。
ありがとう -
解決
1)すべての充電器をUTF8に変換します:
ALTER database_name DEFAULT CHARACTER SET utf8;
2)ページのクエリの前にこれを発行します。
mysql_query("set names 'utf8'");
3)このヘッダーを使用してください。
header( 'Content-Type: text/html; charset=UTF-8' );
4)このメタタグを挿入します:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
5)また、これを読んでください: http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html