关于Miranda 中文乱码问题
2005-10-18 17:10
267 查看
最近在弄JABBERD2.0和MIRANDA,JABBERD2选择了用MYSQL4.1做数据库,出现了MIRANDA中中文乱码的问题。开始是按照网上说的在MYSQL的my.ini里把 default-character-set =…… 改为default-character-set=utf8。结果在MYSQL把一些字段改为中文的可以正常显示,可是在MIRANDA里却不能正常显示;反之在MIRANDA里把群组名改为中文的,在MYSQL里就不能显示正常了。并且有可能会拿不到群组里的联系人。
网上找资料,看到这个:解决PHP存取MySQL 4.1乱码问题 :
从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。我读了一下新的MySQL在线手册中第十章"Character Set Support"后终于找到了解决方法并测试通过。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)...
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
再试试看,正常了吧?^_^ Enjoy!
------------------------------------------------
其实在和老板讨论的时候就有提到MIRANDA和MYSQL间交互问题。没想到这里看到这个:
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式 (Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接 (connection)。
看看我们修改的my.ini里的2处default-character前面的说明就知道:1、The following options will be read by MySQL client applications.…… ;2、The following options will be read by the MySQL Server. ……
connection根本没有涉及到。
结果我还没有去试验怎么改的时候老板叫我过去告诉我怎么做了。
依然是修改my.ini,不过是改为:default-character-set=utf8 (有2次);并且在服务器层次的设置那里加上一句:init-connect = 'set NAMES utf8' 。之所以用utf8是因为JABBERD和MIRANDA之间是用utf8的~ 这样 的结果是MIRANDA里显示一切正常,而MYSQL里显示的就是UTF8文字编码的了。这个到这些已经是最 好的结果了。不知道大家有没有其他好的方法,希望可以指导一下!
网上找资料,看到这个:解决PHP存取MySQL 4.1乱码问题 :
从MySQL 4.1开始引入的多语言支持确实很棒,而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码,即使是设置过了表字符集也是如此。我读了一下新的MySQL在线手册中第十章"Character Set Support"后终于找到了解决方法并测试通过。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)...
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
再试试看,正常了吧?^_^ Enjoy!
------------------------------------------------
其实在和老板讨论的时候就有提到MIRANDA和MYSQL间交互问题。没想到这里看到这个:
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式 (Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接 (connection)。
看看我们修改的my.ini里的2处default-character前面的说明就知道:1、The following options will be read by MySQL client applications.…… ;2、The following options will be read by the MySQL Server. ……
connection根本没有涉及到。
结果我还没有去试验怎么改的时候老板叫我过去告诉我怎么做了。
依然是修改my.ini,不过是改为:default-character-set=utf8 (有2次);并且在服务器层次的设置那里加上一句:init-connect = 'set NAMES utf8' 。之所以用utf8是因为JABBERD和MIRANDA之间是用utf8的~ 这样 的结果是MIRANDA里显示一切正常,而MYSQL里显示的就是UTF8文字编码的了。这个到这些已经是最 好的结果了。不知道大家有没有其他好的方法,希望可以指导一下!
相关文章推荐
- 《1---关于解决MySQL在控制台插入中文乱码问题》
- 解决关于webstrorm出现中文乱码问题
- 关于在地址栏中直接输入中文,后台获取乱码的问题。
- 关于PHP fopen函数在windows系统上创建中文命名的文档时乱码的问题
- 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!
- 关于从插入到数据库里面的简体中文乱码的问题
- 关于Jpgraph 的中文乱码问题
- 文《关于c++与java中文乱码问题分析与解决》中一个bug分析
- 关于asp.net 引用外部js文件或者json文件中文乱码的问题
- 关于tomcat部署在google浏览器上的项目中文乱码问题解决
- Unity 中关于中文乱码以及压缩解压遇到的问题解决方法
- 关于PD4ML解决中文乱码的问题
- 关于中文乱码问题的一些解决方案
- 关于ajax中文乱码问题
- 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!
- 关于中文乱码问题的一些解决方案和经验
- 关于解决Mysql中文乱码问题处理,Windows\Linux\Unix
- 关于请求参数中文乱码的问题
- 关于jFinal开发中遇到的中文乱码问题解决办法
- 关于struts2中表单提交时,中文乱码问题的解决