使用utf8字符串创建存储过程

时间:2013-07-15 09:17:22

标签: mysql stored-procedures utf-8

我有一个存储过程,里面有一些西里尔字符串。我想检查一个带有char列的表,如果该列包含一些特定的字符串,其中一些是西里尔语。问题似乎是我无法使用这些字符串创建过程。

SET NAMES utf8;

delimiter //
drop procedure if exists testutf8
//
create procedure testutf8()
begin
    select 'ξενοδοχια';
end
//
delimiter ;


call testutf8();

返回 ?????????

show create procedure testutf8;

返回

程序testutf8

sql_mode STRICT_TRANS_TABLES

创建程序“CREATE DEFINER = xxx @ %程序testutf8()开始选择'?????????';结束”

character_set_client utf8

collat​​ion_connection utf8_general_ci

数据库整理latin1_swedish_ci

所以尽管我使用SET NAMES UTF8;服务器似乎将我的代码转换为latin1。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

在商店程序输入变量中添加了

CHARSET utf8

所以看起来像这样:

CREATE DEFINER=`root`@`%` PROCEDURE `post_content`(IN postName varchar(255), IN contentEn longtext, IN contentAR longtext CHARSET utf8, IN contentKU longtext CHARSET utf8)

...

答案 1 :(得分:1)

将?characterEncoding = utf8添加到服务器url就可以了。

答案 2 :(得分:0)

尝试使用

delimiter //
drop procedure if exists testutf8
//
create procedure testutf8()
begin
   select CAST('ξενοδοχια' AS CHAR CHARACTER SET utf8);
end
//
delimiter ;