`
txf2004
  • 浏览: 7040211 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql中的乱码总结之mysql5中四个设置字符集的系统变量

阅读更多

http://www.corange.cn/archives/2008/10/2050.html

好多次更换mysql主机商时,都要造成mysql数据的乱码,因为网站开发历史经历了多个mysql版本,而且是在我刚刚学php时一点点做的,因为底层的东西很混乱,当时就没有也不知道如何处理字符串,今天决定好好的研究下它。mysql5提供了以下几个设置字符集的系统变量:character_set_client 客户端字符集character_set_connection 客户端与服务器端连接采用的字符集character_set_results SELECT查询返回数据的字符集character_set_database 数据库采用的字符集乱码问题一般是由于以上几个变量设置错误照成的,所以只要理解这几个变量,就可以与告别乱码了。使用上述变量,要理解这个核心思想: character_set_client,character_set_connection这两个变量保证要与 character_set_database编码的一致,而 character_set_results则保证与SELECT返回的结果与程序的编码一致。我们可以在程序中使用 set names来同时设置character_set_client, character_set_connection, character_set_results这三个系统变量。
例如 set names 'utf8' 等同于 :

set @@character_set_client = 'utf8'

set @@character_set_connection = 'utf8'

set @@character_set_results = 'utf8'一般情况下,当数据库与数据库表的字符集为utf8,我们再在程序里设置set names 'utf8'命令,这样就能保证无乱码了,但是,这里还要注意character_set_results变量的值,character_set_results的字符值是用来显示返回给用户的编码的。
例 如,你的数据库(character_set_database)用的是utf8的字符集,那么你就要保证 character_set_client,character_set_connection也是utf8的字符集。而你的程序也许采用的并不是 utf8,比如你的程序用的是gbk,那么你若把character_set_results也设置为utf8的话就会出现乱码问题。此时你应该把 character_set_results设置为gbk。这样就能保证数据库返回的结果与你的程序的编码一致。

以下摘自网络的一程序段:<?//假设我们的程序采用的是utf8的字符集$program_char = 'utf8';//先检查mysql的版本号,如果版本号大于4我们才可以设置这些系统变量(mysql4还没有这些系统变量)$version = current($db->fetch_one('SELECT VERSION()'));if (substr($version, 0, 1) > 4){//取出当前数据库的字符集$sql = 'SELECT @@character_set_database';$char = current($db->fetch_one($sql));//将客户端字符集(character_set_client)和连接字符集(character_set_connection)设置为与数据库字符集(character_set_database)一致$db->query('SET @@character_set_client = "' . $char . '"');$db->query('SET @@character_set_connection = "' . $char . '"');//将SELECT查询返回数据的字符集设置为与当前程序的字符集一致$db->query('SET @@character_set_results = "' . $program_char . '"');}?>1、要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致;2、要保证通讯的字符集与数据库的字符集一致,即character_set_client, character_set_connection与character_set_database一致;3、要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致;4、要保证程序编码与浏览器编码一致,即程序编码与<meta http-equiv="Content-Type" content="text/html; charset=?"/>一致。

分享到:
评论

相关推荐

    MySQL数据库—乱码总结

    MySQL数据库中的乱码问题通常出现在数据的输入、存储以及输出过程中,主要原因是字符集设置不一致导致。例如,在客户端(如JDBC连接)和服务器端之间存在不同的字符集设置,或者在数据库内部不同层级的字符集设置不...

    设定mysql字符集解决终端乱码

    在 MySQL 中,有多个与字符集相关的系统变量,这些变量决定了数据在客户端和服务端之间的传输以及存储方式: 1. **`character_set_client`**:表示客户端向服务器发送 SQL 命令时所使用的字符集。 2. **`character_...

    设置mysql字符集

    ### 设置MySQL字符集的方法 #### 通过配置文件设置 在MySQL安装过程中或之后,可以通过编辑MySQL的配置文件(通常是`my.ini`或`my.cnf`),来全局设置字符集和校对集。具体操作如下: 1. 打开MySQL的配置文件,...

    MySQL写入中文乱码character

    具体步骤是在MySQL的安装配置工具`MySQLInstanceConfig.exe`中选择`Character Set`环节,并将服务器字符集设置为`utf8`。 #### 五、案例分析 假设在命令行下读取数据时出现了中文乱码的问题: 1. **现象**:MySQL...

    mysql 字符集 乱码问题

    ### MySQL字符集与乱码问题解析 在MySQL数据库管理中,字符集的配置与使用是十分重要的环节之一,尤其在处理多语言环境的数据时更是如此。如果字符集配置不当,很容易导致数据插入、查询过程中出现乱码问题。本文将...

    MYSQL中文显示乱码问题

    如果你遇到的问题是在MYSQL Query Browser或其他客户端工具中输入中文时出现乱码,或者导入包含中日文数据后显示乱码,那么可能需要调整这些字符集设置。 解决方法如下: 1. **修改MySQL配置文件**:在非安装版...

    彻底解决C# asp.net连接MySQL乱码问题

    1. **字符集一致性**:确保整个系统(包括 MySQL 服务器、连接字符串、应用程序代码等)中使用的字符集一致。 2. **测试验证**:更改设置后,一定要进行充分的测试以验证乱码问题是否已经解决。 3. **性能考虑**:...

    mysql乱码问题解决办法

    #### 二、查看当前MySQL字符集设置 通过执行以下SQL命令可以查看MySQL当前的字符集设置情况: ```sql SHOW VARIABLES LIKE 'character%'; ``` 这条命令会列出所有与“character”相关的变量及其当前值。根据输出的...

    mysql中文乱码解决方案

    为了解决这个问题,我们需要从多个角度进行排查与解决,包括检查系统环境变量、MySQL配置文件、客户端连接参数以及数据表和字段的字符集设置等。 #### 1. 了解字符集的基础概念 - **字符集**:是一系列字符的集合...

    linux secureCRT查看mysql中显示乱码

    - 在进行字符集配置时,请确保整个工作流程中的每个环节都采用相同的字符集设置,以避免因字符集不一致而导致的数据乱码问题。 - 当使用不同的字符集时,需要注意转换过程中的潜在数据损失或格式问题。 - 定期检查...

    mysql乱码问题解决

    MySQL作为广泛使用的开源关系型数据库管理系统之一,在实际应用中也难免会遇到字符集不匹配导致的数据乱码问题。本文将详细探讨如何识别与解决MySQL中的乱码问题,并提供具体的操作步骤及注意事项。 #### 一、理解...

    MYSQL中文乱码 xx

    根据所提供的文件信息,我们可以深入探讨几个关键的知识点,包括字符集(Character Set)与校对规则(Collation),以及如何在MySQL中正确地配置这些参数来解决中文乱码问题。 ### 知识点一:字符集(Character Set...

    Java连接过程中的MySQL中文乱码问题[整理].pdf

    1. **MySQL字符集**:MySQL的字符集分为几个部分,包括`character_set_client`、`character_set_connection`、`character_set_database`等。这些变量决定了客户端、连接和数据库本身的字符编码。在示例中,可以看到...

    mysql中文乱码解决

    MySQL中文乱码问题在Linux和Windows环境下经常遇到,主要原因是字符集设置不正确,导致中文字符无法正常显示或存储。本文将详细介绍如何在两种操作系统下解决这个问题。 在Linux系统下,解决MySQL中文乱码的问题...

    MySql5中文乱码的解决方法

    为了从根本上解决乱码问题,最有效的方式之一是在MySQL服务器端修改全局字符集设置,确保整个数据库系统的字符集能够支持中文编码。具体步骤如下: 1. **编辑MySQL配置文件**:找到MySQL安装目录下的`my.ini`文件,...

    MySQL写入中文乱码之处理character

    中文乱码问题是MySQL使用中常见的问题之一,通过对客户端、服务器端及数据库级别的字符集进行统一配置,可以有效避免此类问题的发生。此外,定期检查并维护MySQL的字符集配置也是十分必要的。希望本文提供的解决方案...

    mysql乱码的解决方法

    #### 二、MySQL字符集介绍 在深入了解乱码问题之前,我们需要先了解MySQL中的几个重要的字符集参数: 1. **`character_set_client`**:客户端连接使用的字符集。 2. **`character_set_connection`**:用于存储当前...

    mysql5.6.19非安装版中文乱码解决

    - 在系统环境中添加环境变量 `MYSQL_HOME`,并将其值设置为 MySQL 的安装目录,例如:`D:\Program Files\mysql-5.6.11-winx64`。 - 将 `%MYSQL_HOME%\bin` 添加到系统的 `Path` 变量中,这样可以在任何位置运行 ...

    linux下mysql数据库乱码问题

    在 Linux 系统中使用 MySQL 数据库时,可能会遇到字符集不匹配导致的数据乱码问题。通常这种现象表现为数据库中的文本数据无法正确显示或存储,出现各种奇怪的符号或者乱码。该问题主要是由于 MySQL 的字符集设置与...

Global site tag (gtag.js) - Google Analytics