【发布时间】:2017-03-07 23:24:09
【问题描述】:
我有旧数据库,其中包含 latin1_swedish_ci 排序规则中的宝贵数据。我现在正在尝试将其转换为 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
它正在将我的数据从 Balaševiæevi 截断到 Bala
然后我尝试使用此转换数据库
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
所有内容都转换为 utf8_general_ci,数据没有被截断,但我仍然遇到问题,因为字符没有按应有的方式显示。
【问题讨论】:
标签: mysql utf-8 iso-8859-1