我有一个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
提前致谢
答案 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字节的表可以通过
转换为utf8ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;