2011-07-11 21 views
8

データベースを作成中に照合を指定しなかったので、♥•â—♥ Dhaka ♥•â—♥♥•●♥ Dhaka ♥•●♥)のような値でデータベースを埋めました。
今すぐ修正したいです。私は最初からデータを取得した場所からデータを再度取得できません。 PHPスクリプトでデータを取得して正しい文字に変換することが可能なのではないかと考えていました。
データベースとフィールドの照合順序をutf8_general_ciに変更しました。PHPを使ってlatin1_swedish_ciをutf8に変換する

+0

どのように私は元のテキストを•â-♥から得ることができますか? –

答えて

14

照合順序は文字セットと同じではありません。照合はテキストの並べ替えと比較にのみ使用されます(そのため、そこには言語用語があります)。実際の文字セットは異なる場合があります。

最も一般的な障害は、データベースにではなく、PHPとMySQLの接続です。接続のデフォルトのcharsetは、通常ISO-8859-1です。 SQLクエリSET NAMES 'utf-8';またはmysql_set_charset関数を使用して、connectiongの後で最初に行うことを変更する必要があります。

テーブルの文字セットも確認​​してください。あなたがUTF-8を指定していない場合は、これも間違っている可能性があります(これは照合と同じではありません)。ただし、ここで何か変更する前に必ずバックアップを取ってください。 MySQLは文字セットを前のものから変換しようとします。したがって、ISO-8859-1テーブルにUTF-8データを実際に保存した場合は、バックアップからデータを再ロードする必要があります。

+0

これらの文字 '♥●●♥'は 'utf8_general_ci'文字セットでこれとまったく同じように保存されますか?そして、これらの文字が保存されたときにどのような文字セットが使用されたのかを私はどのように知っていますか? –

+1

utf8_general_ciは文字セットではなく、照合です。実際の文字セットはutf-8と呼ばれ、テーブルの別のプロパティです。 utf-8は存在するほとんどの文字をコードすることができます。そうです(実際はSO自体がUTF-8を使用しているため、あなたの質問に対する答えが「いいえ」の場合は文字を表示できません)。 2番目の質問に関しては、テキストを保存したときにテーブルと接続のどの文字セットがあるかを調べることから始めます。 –

+0

ありがとうございます。私は今それを得ている。 :) mysql_set_charsetをutf8に設定すると、新しいエントリの作成に役立ちます。他の詳細を見てください。 :) –

2

私はmb_detect_encoding()mb_convert_encoding()を見て、彼らがあなたを助けることができるかどうかを見ます。

+0

私はmb_detect_encodingを '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 8。今何をすべきか? –

+1

壊れたエンコーディングの問題のように聞こえます。これを読んでください:http://stackoverflow.com/questions/1344692/i-need-help-fixing-broken-utf8-encoding – AlienWebguy

関連する問題