2012-05-05 9 views
2

UTF-8にエンコードされたデータがありますが、これはスペイン語になります。私はそれを入れておく必要があるデータベースの列は、現在latin1文字セットを使用しています。UTF-8データをlatin1データベース列に入れるとどうなりますか?

これらの列にUTF-8データを挿入するとどうなりますか?正しいデータが失われますか? また、PHP関数mb_convert_encodingを使用してエンコードを変換する必要がありますか?

+3

あなたの質問はあなたがすでに答えを知っていることを示しています。 「私はそれを間違ったやり方、あるいは正しい方法で行うべきか」 –

+3

あなたはそれを試してみてはどうですか? –

答えて

3

可能なすべてのバイトシーケンスはlatin1で有効ですので、になります。UTF-8でエンコードされた文字列を列に挿入すると何も文句はありません。データをデータベースから抽出すると、バイトがUTF-8でエンコードされていることをクライアントが知っていれば、元のデータに戻ります。

ただし、実際にはこのようにしないでください。なぜ列データ型をUTF-8に変更しないのですか?

ALTER TABLE my_table MODIFY my_column TEXT CHARACTER SET utf8; 
+0

ありがとうございます!私は列の文字セットを変更することを考えましたが、現在のデータを混乱させるのは怖かったです。しかし、あなたが言ったことから、それはすべてのデータが大丈夫になるように聞こえる。 – Brett

+0

@Brett:MySQLは、あなたのカラムの既存のデータを新しい文字セットに変換しようとします。したがって、列にUTF-8でエンコードされたデータがある場合は、まずそれを 'binary'キャラクタセットに変換し、* then *をUTF-8に変換する必要があります。 (既にUTF-8に変換している場合は心配しないでください。 'latin1'と' binary'と 'utf8'に変換してください)。 – eggyal

+0

素晴らしい - ありがとう! – Brett

関連する問題