最近在使用java 和 mysql的开发,遇到要在 mysql数据库中使用
selec * from tableName where like table_title LIKE ‘%你好%’;
假设表tableName是
id txt
1 你好abc
当我使用上面的sql语句时,并没有返回任何结果。而当我把 “你好” 换成 a,就会返回第一行数据。这很让我纳闷。
首先说明,我的 所有IDE(Myeclipase),编辑器(Editplus)都是默认utf-8的,文件(jsp,html)中的编码也都是设置为utf-8,mysql服务器是utf-8,新建数据库 的数据库也是 utf-8(general_ci那个。但是依然出现汉字的问题,我搞不懂。
然后我上网搜索,大多都是php+mysql之类的资料,有jsp的多半也是这么几种情况:
1,mysql安装的时候没有选utf-8
2,新建数据库的时候没有选择utf-8
3,页面jsp或html没有选择utf-8
4,如果是php开发 ,那么就是在选择数据库语句 mysql_select_db(“dbname”, $con);
后,少了一条语句: mysql_query(“set names utf8;”);
看到第4条,我就想着,jsp是不是也有这么一条语句,但是搜索了很久,貌似没有。总之,我感觉不是页面和数据库的编码问题,而是 页面向mysql的服务器发送数据的时候,数据的编码不正确的问题(数据库识别英文字符,却不支持汉字)。
最后,我突然想到要百度 mysql url ,果然,我的url有问题。
正规的 mysql 的 url 是这样的:
url= jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk
这里面有很多参数,其中 解决最后问题的就是 useUnicode 和 characterEncoding 这两个参数。