UTF-8
にエンコードされたデータがありますが、これはスペイン語になります。私はそれを入れておく必要があるデータベースの列は、現在latin1
文字セットを使用しています。UTF-8データをlatin1データベース列に入れるとどうなりますか?
これらの列にUTF-8データを挿入するとどうなりますか?正しいデータが失われますか? また、PHP関数mb_convert_encoding
を使用してエンコードを変換する必要がありますか?
UTF-8
にエンコードされたデータがありますが、これはスペイン語になります。私はそれを入れておく必要があるデータベースの列は、現在latin1
文字セットを使用しています。UTF-8データをlatin1データベース列に入れるとどうなりますか?
これらの列にUTF-8データを挿入するとどうなりますか?正しいデータが失われますか? また、PHP関数mb_convert_encoding
を使用してエンコードを変換する必要がありますか?
可能なすべてのバイトシーケンスはlatin1
で有効ですので、はになります。UTF-8でエンコードされた文字列を列に挿入すると何も文句はありません。データをデータベースから抽出すると、バイトがUTF-8でエンコードされていることをクライアントが知っていれば、元のデータに戻ります。
ただし、実際にはこのようにしないでください。なぜ列データ型をUTF-8に変更しないのですか?
ALTER TABLE my_table MODIFY my_column TEXT CHARACTER SET utf8;
ありがとうございます!私は列の文字セットを変更することを考えましたが、現在のデータを混乱させるのは怖かったです。しかし、あなたが言ったことから、それはすべてのデータが大丈夫になるように聞こえる。 – Brett
@Brett:MySQLは、あなたのカラムの既存のデータを新しい文字セットに変換しようとします。したがって、列にUTF-8でエンコードされたデータがある場合は、まずそれを 'binary'キャラクタセットに変換し、* then *をUTF-8に変換する必要があります。 (既にUTF-8に変換している場合は心配しないでください。 'latin1'と' binary'と 'utf8'に変換してください)。 – eggyal
素晴らしい - ありがとう! – Brett
あなたの質問はあなたがすでに答えを知っていることを示しています。 「私はそれを間違ったやり方、あるいは正しい方法で行うべきか」 –
あなたはそれを試してみてはどうですか? –