日期:2014-05-16  浏览次数:21173 次

MYSQL存储过程字符集 一个非常纠结的问题
create testtableA(
  zhongwen text(256),

)DEFAULT CHARSET=utf8;
create testtableB(
  writezhongwen text(256),
  in text(256),

)DEFAULT CHARSET=utf8;

DELIMITER //
CREATE PROCEDURE test(IN inzhongwentext(512) CHARSET 'utf8')
BEGIN
declare temvalue text;
select zhongwen into temvalue from testtableA;
insert into testtableB(writezhongwen,in) value (temvalue,inzhongwen);
END//
DELIMITER ;




如果在创建存储过程的时候不将inzhongwen设置成utf8
那么testtableB的in字段和writezhongwen将会是乱码……
将它设置成utf8后,in字段恢复正常,而writezhongwen字段仍然是乱码

我连接数据库都会经过这个步骤
mysql_query('set names utf8')
我不希望必须要修改mysql的配置文件来来改变数据库的字符集,如果换一台机器,换另一个不懂电脑的人,他就没法弄了~


所有我想请教一下如何可以将
select 出来的字符改成utf8格式呢

MYSQL创建存储过程的时候能像创建表的时候一样指定字符集吗?
或者如何定义变量的时候设置它的默认字符集呢?
declare temvalue text;

------解决方案--------------------
将text类型换成varchar试试