windws下mysql客户端登陆服务器选用字符集的不同造成的语句执行效果不正确
来源:互联网 发布:js获取当前时间年月日 编辑:程序博客网 时间:2024/05/19 16:35
项目中涉及到了对中文的模糊查询,即对中文的匹配问题。该过程通过在系统中调用服务器端的存储过程来实现。将中文作为参数传入存储过程,模糊查询后,返回匹配结果。但是却总也无法返回结果。无奈,又是一上午搭进去了,好在,问题解决了。
下面说说这个问题,不仅仅是对这个问题,它是很多类似问题的典型代表,有很大的指定意义:说道底,这个问题是字符集编码的问题!!!
我的机器上装有mysql客户端,操作系统式windows xp;服务器上装有mysql服务器,操作系统是red hat Enterprise linux 5;
我在我的电脑的文本编辑器中写好存储过程脚本,然后,在cmd里面登录mysql服务器,执行存储过程的脚本,创建好存储过程。然后在我本地通过java应用程序调用存储过程,传进中文参数,得到返回结果,本该得到记录,但输出为空。而当我传入的参数是英文字符时却可以得到预期的结果集。
多余的就不说了,直接解释原因吧:
windows xp中的cmd是默认的GBK编码,那么我从这个平台下登录到linux服务器后,创建的存储过程全都是GBK编码的,包括我的存储过程中SQL脚本中的用于匹配中文的那个?参数(我是采用了预编译SQL的方式);既然这个问号是GBK编码的,它要去匹配的话就会找一个GBK的字符去匹配,而JAVA是UTF8编码的,当我从JAVA应用程序里传一个汉字进去,加入时"中",这个"中"就是UTF8编码的,它被传进存储过程后,存储过程会把这个字当成GBK编码的字去匹配,也就是指截取了这个UTF8编码的"中"的一个字节去匹配数据库中的记录,自然,没有匹配上的结果了。
问题明朗了,如何把存储过程中的字符以UTF8编码进行编译??
这里有几个解决的方式:
1:在LINUX服务器里面的终端里登录mysql服务器,创建该存储过程,由于LINUX默认的是UTF8编码,自然就会把存储过程创建为UTF8编码。
2:在windows xp的cmd中,登录mysql服务器的时候,指定字符集:mysql -h192.168.0.2 -uroot -ppswd --default-characer-set=utf8即可,这样,客户端与服务器之间就是通过统一的utf8编码进行通信了。
至此,问题解决。
这个问题也同样适用于对中文的导入导出:比如select * from table into outfile 'filepath'语句,若记录中存在中文,也需要用这种方式解决,同样导入也是。
- windws下mysql客户端登陆服务器选用字符集的不同造成的语句执行效果不正确
- Windws MySQL客户端 访问 ubuntu MySQL服务器
- Oracle数据库字符集和客户端字符集不同,强制转化可能会造成不可预期的后果
- Oracle数据库字符集和客户端字符集不同,强制转化可能会造成不可预期的后果
- 修改mysql客户端及服务器的字符集
- 网络编程(6)—— 基于Windws系统的UDP协议socket服务器和客户端
- mysql客户端登陆服务器速度奇慢的问题
- 无法用指定MySQL客户端登陆服务器的案例分析
- Oracle客户端的字符集与服务端字符集不同
- Oracle数据库字符集和客户端字符集不同的解决办法
- ListBox选用不同的模板
- windws下搭建gitblit服务器
- Linux操作系统下 MySQL的服务器字符集设置
- 问题:数据库字符集和客户端字符集是不同的 查询服务器端的字符集
- SqlServer Update更新语句因where条件不正确 造成更新全表的情况
- 关于数据库DBM不同造成的SQL语句差异
- mysql order by 造成语句 执行计划中Using filesort,Using temporary相关语句的优化解决
- MySQL字符集在Linux下与在Windows下的不同
- 实现排序,INotifyPropertyChanged,filter的BindingListView
- 划分任意子窗口
- swt 的 菜单
- 伟大的抽象/具体二分法
- 用MYSQLDUMP备份生成的文件还原到另外的电脑后数据写入失败
- windws下mysql客户端登陆服务器选用字符集的不同造成的语句执行效果不正确
- del_ok.php源代码分析
- 豆瓣里可以很好的交流书籍。
- search.py源代码分析:用到了google算法
- Autodesk AutoCAD 专业插件制作 定制化开发
- [Serializable]在C#中的作用-NET 中的对象序列化
- 鸟儿吃了我种的草莓
- Inventor 定制化开发 及 专业用户培训
- 并查集及其应用