MySQL不识别字符'?'在选择

时间:2015-03-17 22:45:07

标签: mysql database select character-encoding

我在MySQL中有一个表,其中包含以下列:

id     name   email    address   borningDate

我在HTML页面中有一个表单,它将此数据提交给servlet,负责将其保存在数据库中。由于charset问题(已经修复),我在尝试存储带重音的字母时保存了这样的行:

19        ?        ?       ?      2015-03-01

现在我要删除这一行。

是的,这样做:

DELETE FROM table WHERE id=19;

效果很好。我的遗嘱问题是:为什么,如果我尝试这样的事情:

DELETE FROM table WHERE name='?';

它返回0 rows affected,就好像它不能将?视为有效字符一样?

1 个答案:

答案 0 :(得分:0)

尝试

SELECT id, HEX(name), HEX(email), HEX(address), borningDate FROM table

这将告诉您数据库中的实际内容。它可能实际上不是ASCII问号。当MySQL试图将列的字符集转换为连接的字符集时,问号可能是替换字符。

要更具体地管理它,请执行SHOW CREATE TABLE table并查找用于文本列的字符集。这可能会在表定义的最后显示为DEFAULT CHARSET utf8或类似的东西。但它可能在列定义中指定。

知道字符集后,发出命令SET NAMES charset,例如SET NAMES utf8。然后重新发出命令,看看你是否得到比?替换字符更好的结果。当然,这假定您使用的客户端程序可以处理所提到的字符集。