mysql没有在bash中正确编码字符

时间:2015-09-17 10:38:04

标签: mysql bash utf-8

我有一个bash脚本,它从数据库中读取数据。我试图将字符集设置为UTF-8,因为脚本产生的结果是“Heemw?i”,它应该是“Heemwéi”。似乎存在编码问题,即使使用--default-character-set=utf8也是如此。 我仍然没有得到正确的结果,有人可以建议。

QUERY="select name from my_table"

MY_ROW=`mysql -sN -u$USER -p$PWD --default-character-set=utf8  -h$HOST  mydb   -e  "$QUERY"` 

预期结果:Heemwéi

实际结果:Heemw?i

提前致谢

2 个答案:

答案 0 :(得分:0)

通过将列包裹在函数CONVERT周围来解决问题,例如:从my_table中选择CONVERT(名称USING utf8)

答案 1 :(得分:0)

SHOW CREATE TABLE - 您可能会发现该列不是CHARACTER SET utf8,就像它应该的那样。

请提供SELECT col, HEX(col) FROM ... WHERE ...,以便我们了解数据的存储方式。

é,在latin1中是十六进制c9;在utf8中:c389

假设该表被错误地声明为latin1,并且它实际上有latin1个字节,那么这就是如何修复'它:

声明为latin1且包含latin1字节的表可以通过

转换为utf8
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;