`

MySQL数据库编码问题(转载)

 
阅读更多

在程序开发中,有时会被字符乱码的问题所困扰。对此,必须理解 MySQL 的字符集编码设置的原理:在MySQL中,默认使用的是lartin1,也就是ISO8859-1字符集编码。这是一种8位的编码,适用于所有西欧字符。而对于汉字等是不合适的。最好、最通用的编码格式是utf-8,UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是一种针对Unicode 的可变长度字节编码的Unicode字符集。它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。所以对于8位的西欧字符集来说,更能比较节省空间,而又能够有效地表示汉字等字符。 MySQL服务器对字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。

一、MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置:
(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
总结:如果什么地方都不修改,那么所有的数据库的所有表的所有栏的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏的都用 UTF-8 存储。

二、查看默认字符集
查看系统的字符集和校对的设定可以通过下面的两条命令:
1. mysql> SHOW VARIABLES LIKE 'character%';
2. mysql> SHOW VARIABLES LIKE 'collation_%';

三、修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如:default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart
(2) 还有一种修改字符集的方法,就是使用mysql的命令,如:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
有时设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8'; SET NAMES显示客户端发送的SQL语句中使用什么字符集。因此,SET NAMES 'utf8' 语句告诉服务器“将来从这个客户端传来的信息采用字符集'utf8'。它还为服务器发送回客户端的结果指定了字符集。
它相当于下面的三句指令:
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;

新建数据库时指定库的编码:
create database dbName DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

新建数据表时指定表的编码:
create table tableName (uid smallint(5) unsigned NOT NULL auto_increment,username char(50) NOT NULL default '',PRIMARY KEY(uid))TYPE=MyISAM DEFAULT CHARSET=utf8;

 


另 AJAX 提交中文出现乱码问题 见另一文章:

http://blog.csdn.net/ctowoo/archive/2009/09/26/4596396.aspx


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ctowoo/archive/2009/09/26/4596361.aspx

分享到:
评论

相关推荐

    更改MySql数据库的默认编码格式

    一、设置数据库编码 在安装 MySQL 时,我们可以选择编码格式。如果已经安装过 MySQL,可以更改配置文件 my.ini 中的设置以达到目的。my.ini 文件位于 MySQL 的安装目录下。打开文件,找到以下两处: [client] port...

    中国城市编码 sql mysql 数据库

    中国城市编码 sql mysql 数据库 ,中国所有的城市编码,三级城市编码,数据库脚本 ,中国城市编码 sql mysql 数据库 ,中国所有的城市编码,三级城市编码,数据库脚本 ,中国城市编码 sql mysql 数据库 ,中国所有的...

    Mysql数据库编码问题 (修改数据库,表,字段编码为utf8)

    MySQL数据库编码问题涉及到字符集的选择、配置以及数据的迁移和处理。字符集是决定数据库中存储和检索文本数据的方式,对于多语言支持和数据迁移至关重要。UTF-8是一种广泛使用的多字节字符编码,支持全球大部分语言...

    MyEclipse连接MySQL数据库报错解决办法

    我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助。 一般MySQL连接不上,可能有两大...

    h2数据导入mysql数据库(看评论酌情下载)

    此外,在将 h2 数据库中的数据导入到 MySQL 数据库中时,需要注意数据类型的兼容性问题。如果 h2 数据库中的数据类型与 MySQL 数据库中的数据类型不兼容,可能会出现数据导入失败的情况。 h2 数据库导入 MySQL ...

    Informatica连接Mysql数据库案例

    Informatica 连接 Mysql 数据库案例 Informatica 是一个功能强大的数据集成平台,支持多种数据源的连接和集成,本文档将详细介绍 Informatica 连接 Mysql 数据库的步骤和配置。 Informatica 连接 Mysql 数据库的...

    MYSQL数据库大进级,是非常全面的MYSQL数据库进阶学习资料!

    MYSQL数据库大进级,是非常全面的MYSQL数据库进阶学习资料!

    国家开放大学 MySQL数据库应用 实验训练1 在MySQL中创建数据库和表

    "国家开放大学 MySQL数据库应用实验训练1 在MySQL中创建数据库和表" 本实验训练旨在让学生掌握 MySQL 中的数据库和表的创建过程。 MySQL 是一种关系型数据库管理系统,广泛应用于各种领域。为提高学生的实践能力,...

    MySQL数据库系统中文乱码问题及解决方案.pdf

    MySQL数据库系统中文乱码问题及解决方案 MySQL数据库系统中文乱码问题是指在使用MySQL数据库系统时,中文字符在存储、传输和显示过程中出现乱码的问题。这种问题的出现是由于字符集和编码方式的不兼容所致。 在...

    MySql数据库MySql数据库MySql数据库

    MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库

    VB6.0连接MySQL数据库

    本文将详细地介绍新手如何使用VB6.0连接MySQL数据库,并提供清晰的步骤。 首先,要使VB6.0能够连接到MySQL数据库,需要在VB6.0的应用程序中引用MySQL的数据库引擎。由于VB6.0本身并不直接支持MySQL,所以一般需要...

    MySQL数据库巡检手册 MySQL DBA必备

    MySQL数据库巡检手册是MySQL数据库管理员(DBA)在进行数据库管理和维护工作中非常重要的参考资料。巡检手册包含了数据库性能、安全、运行状况等方面的检查项,以确保数据库能够正常稳定运行,及时发现并解决潜在问题...

    matlab访问mysql数据库教程及代码

    MATLAB 访问 MySQL 数据库教程及代码 MATLAB 是一个功能强大的数学计算软件,而 MySQL 是一个流行的关系数据库管理系统。在本教程中,我们将学习如何使用 MATLAB 访问 MySQL 数据库,并提供详细的代码示例。 一步...

    MySQL数据库技术与项目应用教程教案.pdf

    MySQL数据库技术是目前广泛使用的关系型数据库管理系统之一,它采用标准的SQL语言作为数据操作和查询的手段,能够高效地管理大量数据。在本教案中,将重点介绍MySQL数据库的安装、配置,以及字符集设置等技术点,并...

    MySQL数据库应用形考实验1-4全答案.zip

    MySQL数据库是一种广泛应用于Web开发和企业级数据存储的开源关系型数据库管理系统。在这个"MySQL数据库应用形考实验1-4全答案.zip"压缩包中,包含了四个关于MySQL基础操作的实验训练,涵盖了从数据库和表的创建,到...

    腾讯云数据库mysql产品认证答案

    腾讯云数据库mysql产品认证答案涵盖了mysql数据库、腾讯云、云数据库、mysql数据库认证和腾讯云云数据库产品等方面的知识点,是一份非常重要的认证考试答案,能够帮助考生更好地掌握mysql数据库管理和维护知识。

    MYSQL 数据库导入导出命令

    MYSQL 数据库导入导出命令 MySQL 数据库导入导出命令是数据库管理员和开发者经常使用的命令,用于将 MySQL 数据库导出到文件中,以便备份、还原或迁移到其他服务器。下面将详细介绍 MySQL 数据库导入导出的命令和...

    mysql数据库基础视频

    mysql数据库基础视频178讲,包括视频、sql脚本、ppt、以及复习资料

Global site tag (gtag.js) - Google Analytics