我不能把数据从Latin1_swedish转换成UTF-8。
应用程序基于Symfony2,数据库采用MySQL。
我已经尝试过这个查询:
ALTER TABLE <tablename> CONVERT TO CHARACTER
SET utf8 COLLATE utf8_unicode_ci和:
ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8;我想要一个解决方案,做所有的表和列,因为MySQL数据库有1000个表。如果我必须手动修改它们,这将花费太长的时间。
发布于 2015-04-21 11:39:55
既然您提到了“奇怪的字符”,我怀疑“从latin1更改为utf8”并不是真正的任务,而是为了修复插入过程中发生的某种混乱。
大约有5个案例需要处理。我们还不知道你接的是哪个案子。请提供
要对某些包含非ascii文本的单元格执行change.
SELECT col, HEX(col) ...操作的表的SHOW CREATE TABLE。让我们回顾一下这些尝试:
ALTER TABLE <tablename> CONVERT TO CHARACTER SET utf8;这假设该表被声明为latin1,并且正确地包含latin1字节,但是您希望将其更改为utf8。因为在latin1中不存在'Ă‘和'Ĺ’,所以这个ALTER感觉非常错误。
ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8;与上面的类似,但是一次只工作一列,并且在MODIFY子句中需要正确的东西。因此,这将是相当繁琐的。
ALTER DATABASE databasename DEFAULT CHARACTER SET utf8;仅为在该databasename中创建的任何新表设置默认CHARACTER SET。单词DEFAULT是可选的。
HEX('ĂĹ') = 'C482C4B9' --所以看起来您正在使用某种东欧语言,可能使用utf8,也可能不使用。请提供更多详细信息。Ă之前和之后发生了什么
“奇怪字符”的修复可能在my blog中,但需要详细信息来直接指出。
发布于 2015-02-03 19:17:18
如果你想改变整个数据库,你应该运行这个命令:
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;发布于 2015-02-03 19:54:45
你试过这个吗?
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;https://stackoverflow.com/questions/28297488
复制相似问题