`

php往mysql写数据,中文乱码问题.

    博客分类:
  • php
阅读更多

最近做一个聊天的项目,用了jaxl来让xmpp server转发消息给web server.然后webserver会保存消息到本地数据库(mysql).

发现mysql中中文为乱码.解决思路:

1.首先检查了自己生成数据库(和table)的脚本中有没有做utf8的设置(通过).

2.yii框架的配置文件中,关于数据库配置有没有 'charset' => 'utf8', (通过).

3.查看mysql 数据库编码方式:

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
于是乎将其改为:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
问题依然存在,这时我想可能是数据写入的时候,就将乱码写入了.也就是说是php(jaxl是php写的)往mysql写数据时有问题.

4.在jaxl中php往jaxl写数据的代码前加入: mysql_query("SET NAMES 'utf8'");

这样,便将php默认字符集设置为utf8(一定要注意,这里是utf8,而不是utf-8).

好的,问题解决...

 

补充:

最近两天又研究下了这个问题,做一个补充.

上面提到的在每次读写数据时添加mysql_query("SET NAMES 'utf8'");

的方法不是很理想,因为我不想每次都添加.也有人提供了一个好办法,用OOP来编写php程序,将数据库读写查询写成一个类,这样就方便多了.

其实,这里还有一个办法可以更加优雅的解决这个问题:修改mysql的配置文件my.cnf

(ubuntu下,my.cnf文件的位置:/etc/mysql/my.cnf)

我们只需要在[mysqld] 下添加

init-connect='SET NAMES utf8'

 

即可.

 

 

 

--------------------------------------

这儿有人提供了一个utf8和my.cnf的配置,非常有用

from:http://notes.timeghost.net/2008/10/utf-8-and-mycnf.html

 

[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
 
[client]
default-character-set=utf8

 

 

 

分享到:
评论

相关推荐

    PHP与MySQL Web应用平台中文乱码问题研究.pdf

    PHP与MySQL Web应用平台中文乱码问题研究.pdf

    MySql数据库导入乱码

    大家在使用PHPmyadmin把mysql数据库导出导入的时候都遇到过中文乱码的问题,尤其是网站迁移的过程中,只有把这个中文乱码的问题解决好了,你才能把mysql数据库玩熟玩好。

    MySQLDBA运维笔记.pdf

    1.2.6 创建存放两个 mysql 实例的数据目录...............................................................11 1.2.7 创建两个 mysql 多实例的配置文件.............................................................

    PHP+MySQL存储数据常见中文乱码问题小结

    本文实例总结了PHP+MySQL存储数据常见中文乱码问题。分享给大家供大家参考,具体如下: PHP+MySQL出现中文乱码的常见原因: 1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码。 2. ...

    php读取mysql中文数据出现乱码的解决方法

    解决方法:创建数据库的时候,MySQL 字符集选择’UTF8’,MySQL 连接校对选择utf8_general_ci,这样创建的数据库用来存储中文肯定没有问题,否则,你的中文首先在MySQL中就是乱码,更不要期望它会给你在PHP页面中...

    基于mysql php程序开发的中文乱码问题及对策分析.pdf

    基于mysql php程序开发的中文乱码问题及对策分析.pdf

    常见php与mysql中文乱码问题解决办法

    乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号。 症状:用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL数据时汉字就变成了?号,并且有多少个汉字就有多少...

    php版mysql大数据库备份和恢复工具

    在原faisunSQL 4.0的基础上,针对数据备份过程中出现乱码的问题,做了优化. 增强的功能: 1.自动识别数据库版本,对于MySQL 4.1以上,备份数据时提示选择字符集. 2.导入数据时,提示原数据库编码,并自动识别. 3.增加...

    mysql中文乱码解决

    经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧

    php插入到mysql数据库中文乱码问题解决

    重装了系统重新安装了PHP的运行环境,也没注意太多,想写点东西复习复习……当我用INSERT INTO想数据表里添加数据的时候,发现数据只要是中文的都是以乱码显示的,于是我在网页中规定了语言为gbk发现还是不行,在...

    Mysql 数据字典生成工具 export_structure.php

    从 http://download.csdn.net/detail/esr2587758/2121033 这里下载后,发现代码有兼容问题和中文乱码问题。 于是修复了兼容问题和编码问题,亲自测试,已经可以正常使用。使用环境: windows 7 php 5.4 mysql 5.1 ...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    02-MySQL数据乱码及多种解决方案实战2.avi 03-MySQL不乱码5种方法及不乱码根源深入详解.avi 04-下节内容及课后作业说明.avi 05-课前思想-17期学生23万入职BAT公司 06-课前思想-及课前考试题说明.avi 07-MySQL字符集...

    PHP MySQL程序开发中的乱码产生原因及解决方案分析.pdf

    PHP MySQL程序开发中的乱码产生原因及解决方案分析.pdf

    phpMyAdmin2.6以上版本数据乱码问题

    在phpMyAdmin2.6以上版本因为支持多语言集,弄得我们使用phpMyAdmin管理数据库的时候,查询出来的中文都是乱码,但是在我们的PHP程序调用时却没有这些问题。 去phpMyAdmin2.6的根目录下,打开以下这个文件: ...

    PHP+MYSQL 出现乱码的解决方法

     第一种方法,很精辟的总结: 经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧: WINDOWS 下导入应该这样 使用MYSQL的命令 ...

    PHP读MYSQL中文乱码的快速解决方法

    打算切换某个网站的主机,没想到遇到Php和Mysql中文乱码的问题。 以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是...

    php写入mysql中文乱码的实例解决方法

    php写入mysql出现中文乱码的解决办法是:在建立数据库连接之后,将该连接的编码方式改为中文。 代码如下: $linkID=@mysql_connect(localhost,root,admin); if(!$linkID) { echo 数据库连接失败!; } echo 数据库...

    PHP读MYSQL中文乱码的解决方法

    打算切换某个网站的主机,没想到遇到Php和Mysql中文乱码的问题。 以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是...

Global site tag (gtag.js) - Google Analytics