2017-03-07 9 views
1

私はlatin1_swedish_ci照合にあった貴重なデータを持つ古いデータベースを持っています。私は今utf8に変換しようとしていますが、私には問題があります。latin1からutf8への変換後にデータが切り捨てられます

私はすべてを試して、私が見つけたすべての記事を読んだ。私はいくつかのデータベースを持っていて、このテクニックのいくつかはデータベースには効果的でしたが、これはそうではありません。

異なるデータベースに

UPDATE tt_news SET 
    title=convert(cast(convert(title using latin1) as binary) using utf8), 
    short=convert(cast(convert(short using latin1) as binary) using utf8), 
    bodytext=convert(cast(convert(bodytext using latin1) as binary) using utf8) 
WHERE 1 

を働いていたし、その後、私はこの

mysqldump -u root -p mydb -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B mydb > dump.sql 

sed 's/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/' <dump.sql | sed 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/' >dump-fixed.sql 

mysql -u root -p mydb < dump-fixed.sql 
を使用してデータベースを変換しようとしたBalaševiæeviからバラ

に自分のデータを切り捨てている私はこれを試してみましたまず第一に、

すべてがutf8_general_ciに変換され、データは切り捨てられませんが、文字が表示されないので表示に問題があります。

答えて

0

複数の文字セットを変換/修正するなどの方法があります。あなたは間違った道を選んだ。

ALTER TABLE ... CONVERT TO ... 

は、別のエンコーディングから正しくエンコードテーブルを変更するための最短の技術です。代わりに、あなたが列に「ダブル・エンコーディングを」持っていた場合

Reference

は、何か他のものが必要とされるであろう。

šための六角は、これは言葉の>Kuæaある

9A in latin1 
C5A1 in utf8 
C385C2A1 if "double-encoded" 

More discussion

+0

あり、これはヘキサ> 4B75C3A661あり、これは、バイナリレベル> 4b75c3a661あります。何をすべきか? – emir

+0

Kuæa – emir

+0

Kuæaがあり、4B75C3A661と4b75c3a661は一貫したutf8です。 (ヘキサの大文字は重要ではありません。)KućaのUtf8 hexは「4B75C48761」です。あなたは "トランケーション"について言及しました - それはリンクでも議論されています。 –

関連する問題