最近做一个聊天的项目,用了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
分享到:
相关推荐
在Linux平台上进行PHP和MySQL的开发时,遇到中文乱码问题是一个常见的困扰。这主要涉及到字符编码设置不一致的问题。本文将详细介绍如何解决Linux(如Ubuntu 14.04 LTS)上PHP与MySQL通信产生的中文乱码问题。 首先...
在构建基于Apache、MySQL和PHP的Web环境时,有时会遇到中文乱码的问题。这个问题通常是由于编码不一致或配置不当导致的。以下是如何解决这个问题的详细步骤: 首先,我们需要了解涉及的主要配置文件:`php.ini`、`...
描述: PHP 中文乱码是 PHP 开发中的常见问题之一,可能发生在网页本身、MySQL 交互过程中或操作系统相关。 知识点: 1. PHP 网页的编码 * PHP 文件本身的编码与网页的编码应匹配 * 使用 gb2312 编码时,需要在 ...
在使用PHP+MySQL进行开发的过程中,中文乱码问题是常见的一个问题。乱码现象通常发生在从数据库查询中文数据时,显示出来的中文变成了不可识别的符号或者问号。产生这种现象的主要原因是**编码不一致**。 1. **...
MySQL中的汉字乱码问题是一个常见的困扰许多开发人员和数据库管理员的问题。这主要涉及到字符编码设置不正确,导致在存储或显示汉字时出现乱码。在MySQL中,字符集是用来定义如何存储和处理字符的规则,它包括服务器...
MySql 数据库导入乱码解决方案 在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的...通过遵循这些步骤,我们可以轻松地解决 MySql 数据库导入中文乱码的问题,并确保我们的数据库数据正确地导出和导入。
在使用PHP与MySQL进行Web开发的过程中,中文乱码问题是常见的一个问题。通常情况下,这主要是由于系统各部分(如PHP脚本、MySQL数据库、操作系统等)之间的字符编码设置不一致所引起的。解决乱码问题的关键在于确保...
在Ubuntu 15.10操作系统中安装并使用MySQL 5.6.28时,可能会遇到中文乱码的问题。这通常与字符集配置有关,影响到数据的正确存储和显示。以下是一份详细的解决方案,旨在帮助你解决这个问题。 首先,我们需要检查...
在PHP开发过程中,遇到中文...总之,解决PHP向MySQL插入中文乱码问题,需要确保数据库、PHP连接、文件编码以及数据处理过程中的编码一致性。遵循以上步骤,可以有效地避免中文乱码问题,确保数据正确无误地写入数据库。
总之,解决MySQL中文乱码问题需要关注数据库、表、列、连接以及数据文件的字符集设置,并确保它们之间的协调一致性。在处理过程中,及时备份数据,做好测试,以避免数据丢失或损坏。在进行数据迁移或系统升级时,...
MySQL 中文乱码问题是一个常见的技术难题,尤其是在迁移或恢复数据时。以下是一些解决方法的详细解释: 1. **DOS 命令行导入数据时的字符集设置** 当通过 DOS 命令行导入 SQL 文件时,确保在 MySQL 客户端设置正确...
在开发Web应用时,MySQL和PHP常常是最佳搭档,但它们在处理中文字符时可能会遇到乱码问题。本文将深入探讨这些乱码问题及其解决方案,并介绍MySQL中的日期时间函数。 首先,MySQL+PHP中文乱码问题主要源于编码不...
《PHP+MySQL中文乱码问题全面解析与解决方案》 在编程世界中,中文乱码问题一直是困扰开发者的一大难题,尤其在PHP与MySQL结合的环境中,由于编码不一致,乱码现象更为常见。本文将深入探讨PHP和MySQL中文乱码产生...
MySQL数据库在处理中文字符时,有时会出现乱码问题,这主要与字符集设置不正确有关。本文将深入探讨MySQL中文乱码问题的原因、解决方法,以及如何在创建数据库和表时避免这类问题。 首先,我们要了解字符集的概念。...
【MySQL 远程访问及中文乱码问题】 MySQL 是一款广泛应用的关系型数据库管理系统,它在数据存储、管理和处理方面有着出色的表现。然而,在实际使用过程中,我们可能会遇到两个常见的问题:远程访问限制和中文乱码...
PHP和MySQL中文乱码问题是一个常见的困扰,尤其是在处理多语言网站或者有中文数据输入的应用程序中。乱码的出现通常是由于编码不一致所导致的。本文将深入探讨PHP与MySQL在处理中文字符时可能出现的乱码问题,并提供...
【MySQL+PHP中文乱码问题】 在MySQL与PHP结合使用时,中文乱码问题是一个常见的困扰。这主要涉及到字符编码的匹配问题。MySQL数据库默认使用UTF-8编码,但当网页编码、数据库编码、表编码或字段编码不一致时,就可能...