在MySQL的存储过程中,对某一属性值与中文字符串进行比较,无法正确进行比较!
cmd中对于mysql中直接写入的中文字符能够进行识别,但是对于通过delphi的ADO控件进行输入的中文字符串,输出字符串为乱码。于是将问题定位于字符集的问题的上,进行相关问题搜索,set names 'gbk',可以实现delphi输入中文字符在cmd下的正确显示,但是存储过程中仍然无法进行正确比较,希望各位能够给予赐教,谢谢!
cmd中对于mysql中直接写入的中文字符能够进行识别,但是对于通过delphi的ADO控件进行输入的中文字符串,输出字符串为乱码。于是将问题定位于字符集的问题的上,进行相关问题搜索,set names 'gbk',可以实现delphi输入中文字符在cmd下的正确显示,但是存储过程中仍然无法进行正确比较,希望各位能够给予赐教,谢谢!
MySQL 中文显示乱码
估计是字符集不统一
能够在cmd中显示中文,但是set names只是暂时的修改字符集参数,永久的修改,我还没试过,担心修改了之后恢复不了的。但是set names 'gbk'之后,我在统一的gbk字符集下,重新建立了表单,但是依旧没能进行中文比较。是不是暂时性的修改无效,必须要永久性的修改后,再重新建立表单才能有效啊?谢谢您了!
对以前建立的表、插入的数据没有影响用mYSQLDUMP导出数据->在统一的gbk字符集下重新建立库、表->导入数据my.ini
[mysql]default-character-set=gbk重新启动MYSQL
不是,只要连接没有断开设置依然有效,排序是与collation校对有关,你查一下,这个是不是统一。SET NAMES'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;你还要看哈
character_set_database | utf8
character_set_server | utf8是否也一致!5楼也说了
set names 'gbk';
对以前建立的表、插入的数据没有影响。你新加几条数据在实验一下。