mysql版本是,设置字符集是否重启服务,应该设置全局字符集应该存储
过程会应用全局字符集设置才对。

解决方案 »

  1.   

    存储过程中定义参数时,无法定义其字符集,因此调用存储过程的时候,会默认读取全局变量character_set_server,而且还是只读取mysqld启动时该全局变量的值作为存储过程中默认的传输字符集。因此,如果数据表/字段使用系统默认的字符集(比如latin1)的话,调用存储过程更新一些非英文的字符串字段时,就不会发生问题;但是,如果数据表/字段的字符集不是系统默认的字符集(比如默认是latin1,数据表使用的是utf8),就会出现问题。
      

  2.   

    是啊,我的数据表全都使用的UTF8的字符集,导入的存储过程部分也是utf8的,但是一部分仍然是GBK的,导致我在写入数据时出现乱码情况!
      

  3.   

    我把这些存储过程删除重新建立了一次,还是保持了gbk的字符集,确认修改了my.ini后重启了服务器