Mysql存储过程中文乱码问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql存储过程中文乱码问题相关的知识,希望对你有一定的参考价值。
存储过程如下:
BEGIN
declare name varchar(20) character set utf8 ;
set name = '小沈阳' ;
if not exists (select * from Friend_Category where UID = iUID and category = 1) then
insert into Friend_Category(CategoryName,uid,Category) values (iCategoryName,iUID,1);
end if ;
if not exists (select * from Friend_Category where UID = iUID and category = 2) then
insert into Friend_Category(CategoryName,uid,Category) values (name,iUID,2);
end if ;
END
直接在数据库中执行存储过程:call p('123','中国人民'); 插入的数据都正常。
通过php程序调用mysql调用该存储过程执行,sql语句写为:
$sql = 'call p("123","中国人民")' ;
执行结果:我传入的中文“中国人民”正常,而存储过程中定义的中文变量“小沈阳”则显示为乱码“灏???”。
注:数据库编码设置为:gbk,且php连接mysql也设置了 set names "gbk";
求解中,百度、谷歌的内容都是存储过程中定义变量后面设置编码,即:
decalre name varchar(20) character set gbk
此法无效...
decalre name varchar(20) character set gbk 无论我设置gbk还是utf8都无效。。。
php程序编码
mysql存储过程编码
这几处的编码都要一致才可以
查看下你的数据库编码,还有字段编码和存储过程,php程序是否一致
参考资料:http://lushuncheng.cn/show.asp?ArticleID=830
参考技术A 字符集问题1、首先要保证你页面、mysql的conncetion、表等几个部分的字符集编码一致
2、其次试下
set name = '小沈阳' ;
---------》
set name = convert('小沈阳' using UTF8); 参考技术B 如果你的数据库编码设置了gbk而且sql连接之后也mysql_query("set names gbk");之后还是乱码的话那就看一下你的php文件的页面编码有没有改,是不是还是它默认的utf8,如果是的话可以使用Dreamweaver这类工具在修改——页面属性——标题/编码中将页面编码修改为gb2312再试试,,或是把数据库和php的页面编码都改为gb2312的,一般sql乱码都是数据库编码、页面编码等不统一的原因,这样改一下再看看 参考技术C 操作系统不支持GBK
应当是 CODEPAGE 936的问题!
oracle存储过程中文乱码问题
设置环境变量,新建变量,
设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
word哥,还是不行呀;
参考:http://idata.blog.51cto.com/4581576/1065826/
现象描述:
pl/sql developer窗口里面正常显示中文,复制,粘贴到文本文档,乱码;或者颠倒过来记事本里的中文到了pl/sql developer就成了乱码。
解决办法:
在复制前将输入法切换到中文输入方式。
以上是关于Mysql存储过程中文乱码问题的主要内容,如果未能解决你的问题,请参考以下文章