大家都知道从 MySQL4.1 版本开始,支持多种编码,包括我们熟知的 latin1、gbk、utf8、big5 等等,还有一些我们闻所未闻的。
在使用 PHP 连接 MySQL 查询出来的数据有的时候居然会是乱码,关于乱码的解决首先我们要了解 MySQL 的编码机制。
拿 Discuz! 论坛为例,Discuz! 论坛在连接 MySQL 后会立即执行一个设定(见include/db_mysql.class.php ):
@mysql_query("SET
character_set_connection=$dbcharset, character_set_results=$dbcharset,
character_set_client=binary", $this->link);
-
<
p
>@
mysql_query
(
"SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary"
,
$this
->
link
);</
p
>
此三处的字符设定很大程度上会解决乱码问题,那么这三个设定具体有什么作用呢?如果我们了解了 MySQL 的编码机制,就可以避免在安装插件及平时的操作过程中产生乱码,还可以自行对论坛的数据进行转码。
character_set_client 我们可以理解为 SQL 语句的编码,如果设置为 binary,MySQL
就当二进制来处理,character_set_connection 设定的值则告诉 MySQL 用来运行 SQL
语句的时候使用的编码,也就是说,程序发送给 MySQL 的 SQL 语句,会首先被 MySQL 从 character_set_client
指定的编码转换到 character_set_connection 指定的编码,如果 character_set_clien 指定的是
binary ,则 MySQL 就会把 SQL 语句按照 character_set_connection 指定的编码解释执行。
当执行 SQL 语句的过程中,比如向数据库中插入取出数据的时候,字段也有编码设置,如果字段的编码设置和 character_set_connection 指定的不同,则 MySQL 会把插入的数据转换成字段设定的编码。
当 SQL 执行完毕向客户端返回数据的时候,会把数据从字段指定的编码转换为 character_set_results 指定的编码,如果
character_set_results=NULL 则不做任何转换动作,(注意这里设置为 NULL 不等于没有设置,没有设置的时候 MySQL
会继承全局设置)。
了解了 MySQL 的编码机制,我们就可以利用这个机制进行数据的转码以及避免在程序使用过程中出现乱码了。
补充:
mysql_query("character_set_client=gbk"); 这句告诉 MySQL 我接下来要用的 SQL 语句的编码是 GBK 的
mysql_query("character_set_connection=gbk"); 这句 告诉 MySQL 要把 SQL 语句转换成 GBK 进行处理
mysql_query("character_set_results=gbk"); 这句告诉 MYSQL 查询返回的结果要统一都转换成 GBK 编码的
分享到:
相关推荐
MySQL 编码与中文显示 MySQL 的默认编码是 Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为 gbk 或者 utf8。下面我们将详细讲解 MySQL 编码与中文显示相关知识点。 MySQL 编码 MySQL 的编码方式是...
全国省市区编码mysql全国省市区编码mysql全国省市区编码mysql全国省市区编码mysql
### MySQL中文编码设置 在Java Web开发过程中,MySQL数据库中的中文编码问题是非常常见的技术难题之一。如果处理不当,可能会导致中文显示乱码、数据插入失败等问题。本文将深入探讨MySQL中文编码的相关设置,并...
mysql编码问题
### MySQL的编码集修改方式详解 #### 背景与目的 MySQL作为一款广泛使用的开源关系型数据库管理系统,在处理各种语言的数据时,字符集的选择至关重要。特别是在全球化的大背景下,支持多语言成为数据库应用的基本...
MySQL 中修改编码配置文件全面配置,适合初学者,一看就会!!
中国城市编码 sql mysql 数据库 ,中国所有的城市编码,三级城市编码,数据库脚本 ,中国城市编码 sql mysql 数据库 ,中国所有的城市编码,三级城市编码,数据库脚本 ,中国城市编码 sql mysql 数据库 ,中国所有的...
在安装MySQL数据库后,有时用户会遇到编码问题,特别是当需要处理中文数据时。这是因为MySQL的默认字符集是Latin1,它不支持中文字符。为了能够正确地存储和显示中文,需要将数据库的编码方式更改为GBK或UTF-8。本文...
系统介绍mysql锁机制
更改 MySql 数据库的默认编码格式 在 MySQL 数据库中,默认的编码格式对于数据的存储和读取起着至关重要的作用。如果我们想要更改 MySQL 数据库的默认编码格式,该如何操作呢?下面我们将详细地介绍如何更改 MySQL ...
MySQL数据库编码问题涉及到字符集的选择、配置以及数据的迁移和处理。字符集是决定数据库中存储和检索文本数据的方式,对于多语言支持和数据迁移至关重要。UTF-8是一种广泛使用的多字节字符编码,支持全球大部分语言...
是一个介绍mysql内部机制及如何进行sql优化的教程。
本文将深入探讨与给定标题和描述相关的知识点,包括“高德mysql信息表”、“高德API”、“地址编码”、“全国省市区”数据、“城市编码”、“邮政编码”、“经纬度”以及“名称拼音”。 首先,高德API是一个开放...
这份"全国省市区地址编码表mysql"提供了一个完整的中国地区层级结构,包括省份、城市和区县的详细信息。 首先,让我们了解一下这个数据表的基本结构。在MySQL数据库中,一个可能的表结构设计如下: 1. **字段名**...
### 修改MySQL编码的方法 在日常使用MySQL数据库的过程中,可能会遇到中文乱码的问题,尤其是在不同的操作系统如Windows和Linux之间切换时更为常见。本文旨在探讨一种通用的解决方案,适用于各种环境下的MySQL中文...
MySQL锁机制_管理(并发锁,行锁,表锁,预加锁,全局锁等等).mht
Mysql支持emoji表情符号升级编码为UTF8MB4 在使用Mysql数据库时,如果需要支持emoji表情符号,需要对数据库的编码进行升级,以便正确地存储和显示emoji表情符号。下面是升级Mysql编码为UTF8MB4的步骤和注意事项: ...
全国行政区划编码 包含5级数据,1-省,2-市,3-区/县,4-街道-镇,5-社区/村 MYSQL插入语句,直接导入数据库
MySQL的编码机制是数据库系统处理各种字符集的关键组成部分,它涉及到如何存储、处理和传输文本数据,特别是涉及多语言和特殊字符的情况。在处理中文查询时,了解这些机制至关重要,可以有效防止出现乱码问题。 `...