我建立的数据库,我在my.ini修改了字符集。字符集显示如下:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+---------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+---------------------------------------------------
-----+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.0\share\char
ets/ |
+--------------------------+---------------------------------------------------
-----+
7 rows in set (0.01 sec)mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+----------------+
| Variable_name | Value |
+----------------------+----------------+
| collation_connection | gbk_chinese_ci |
| collation_database | gbk_chinese_ci |
| collation_server | gbk_chinese_ci |
+----------------------+----------------+
3 rows in set (0.01 sec)数据库里面的数据均能正常显示,但是存储过程里面的所有汉字都是乱码,包括注释的。我从网上找了好多资料没有结果。请问哪位遇到过如何的问题,帮忙给给提示。谢谢。
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+---------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+---------------------------------------------------
-----+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.0\share\char
ets/ |
+--------------------------+---------------------------------------------------
-----+
7 rows in set (0.01 sec)mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+----------------+
| Variable_name | Value |
+----------------------+----------------+
| collation_connection | gbk_chinese_ci |
| collation_database | gbk_chinese_ci |
| collation_server | gbk_chinese_ci |
+----------------------+----------------+
3 rows in set (0.01 sec)数据库里面的数据均能正常显示,但是存储过程里面的所有汉字都是乱码,包括注释的。我从网上找了好多资料没有结果。请问哪位遇到过如何的问题,帮忙给给提示。谢谢。
这个不单是MYSQL,在oracle里面也会出现这样的现象
所以,你在执行建立存储过程时,最好先设置2端的字符集兼容。
+------+--------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+--------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| test | quyanli123_126_com | PROCEDURE | root@localhost | 2009-06-25 18:38:17 | 2009-06-25 18:38:17 | DEFINER | | gbk | gbk_chinese_ci | latin1_swedish_ci |
+------+--------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)mysql>
+--------------+---------------------+-----------+----------------+-------------
--------+---------------------+---------------+---------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment |
+--------------+---------------------+-----------+----------------+-------------
--------+---------------------+---------------+---------+
| aa | pro1| PROCEDURE | root@localhost | 2009-06-23 1
6:16:46 | 2009-06-23 16:16:46 | DEFINER | |
我按楼上的说法执行了 可是没有显示出字符集的信息。我用的是5.0的数据库。
BEGIN
SELECT xx;
END
MySQL 中文显示乱码贴出你的以下信息。表的字符集信息
show create table t1;连接及系统字符集信息。
show variables like 'char%';
+--------------------------+---------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+---------------------------------------------------
-----+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | gbk
|
| character_set_results | gbk
|
| character_set_server | gbk
|
| character_set_system | utf8
|
| character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.0\share\char
ets/ |楼上说的显示表信息?具体显示哪个表啊?表的信息和存储过程有关系吗?
+--------------------------+------------------------------------------------
| Variable_name | Value
+--------------------------+------------------------------------------------
| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | gbk
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\c
+--------------------------+------------------------------------------------
8 rows in set (0.00 sec)mysql>
mysql> delimiter //
mysql> CREATE PROCEDURE `quyanli123_126_com`(xx char(30) character set gbk )
-> BEGIN
-> SELECT xx;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql>
mysql> call quyanli123_126_com('字符集');
+--------+
| xx |
+--------+
| 字符集 |
+--------+
1 row in set (0.06 sec)Query OK, 0 rows affected (0.06 sec)mysql>
BEGIN
select('好');
END$$DELIMITER ;
一开始显示是这样的,但是第二次打开就变成
DELIMITER $$DROP PROCEDURE IF EXISTS `test`.`aa`$$CREATE PROCEDURE `aa`()
BEGIN
select('??');
END$$DELIMITER ;
也就是在数据库中保存的是这个乱码的。