`

[转]MySQL字符集及MySQL编码转换

阅读更多

      数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.
接下来是完整的一个例子:
1.创建数据库表

mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;

#注意后面这句话 "COLLATE utf8_general_ci",大致意思是在排序时根据utf8编码格式来排序
#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了

mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;

#这句话就是创建一个表了,制定默认字符集为utf8

2.写数据
通过php直接插入数据:

<!---->
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
 
//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
//它的作用是设置本次数据库联接过程中,数据传输的默认字符集
mysql_query("set names utf8;");
 
//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
?>

通过页面提交插入数据:

<!----> //输出本页编码为utf-8
header("content-type:text/html; charset=utf-8");

mysql_connect('localhost','user','password');
mysql_select_db('my_db');

if(isset($_REQUEST['name'))
{
    //由于上面已经指定本页字符集为utf-8了,因此无需转换编码
    mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}

$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
    print_r($r);
}
?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">



自此,使用utf8字符集的完整的例子结束了.
如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:

create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;

附:旧数据升级办法
以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据

mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql

第二步:转换编码

iconv -t utf-8 -f gb2312 -c old.sql > new.sql

在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,增加一条sql语句: "SET NAMES utf8;",保存。

相关推荐

    mysql字符集转换

    #### 三、MySQL字符集转换背景及意义 在实际应用中,可能会遇到需要将数据库中的字符集从一种格式转换为另一种格式的情况。例如,从`latin1`转换为`gb2312`或`utf8`等。这种转换通常发生在以下几个场景中: - **...

    mysql数据库互相转换及同步工具-MySQL_MySQL字符集互转

    本文将详细探讨“MySQL_MySQL字符集互转”这一主题,以及如何利用工具如"MSSQL2MySQLSync"进行数据库之间的转换与同步。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种字符集,包括UTF-8、GBK等。...

    精通MySQL字符集与校对集

    ### 精通MySQL字符集与校对集 在MySQL中,正确地管理和配置字符集与校对集对于确保数据的正确性和一致性至关重要。字符集主要用于定义如何存储和表示文本数据,而校对集则定义了如何比较这些文本数据。本篇文章将...

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

    ### 设定 MySQL 字符集解决终端乱码 在处理数据库操作时,经常遇到的一个问题是字符集编码不一致导致的数据乱码问题。对于 MySQL 数据库来说,合理设置字符集可以有效避免此类问题的发生。本文将详细介绍如何通过...

    MySQL字符集

    MySQL字符集是数据库管理系统中的一个重要概念,它定义了数据在存储和检索时的编码方式,影响着数据库中字符串的表示和处理。字符集的选择对于多语言支持、数据一致性以及跨平台兼容性至关重要。MySQL支持多种字符集...

    Mysql字符集

    本文将深入探讨MySQL字符集的基础概念、设置方法以及如何在实际操作中进行字符集的转换。 #### 一、理解MySQL字符集与校对规则 **1. 字符集(Character Set)**:字符集是数据库用来存储和处理文本数据的一组字符...

    Mysql字符集设置原理及常见问题解决

    MySQL字符集设置原理及其常见问题解决是数据库管理中不可或缺的一部分,尤其对于处理多语言或特殊字符的数据时,正确的字符集配置至关重要。字符集定义了数据库、表和字段能存储的字符范围,它决定了数据的编码和...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    8. **注意事项**:数据迁移时需考虑字符集兼容性,因为MySQL和Oracle可能使用的字符集不同,可能导致编码问题。 9. **优化与调整**:转换后的Oracle表可能需要根据Oracle的最佳实践进行一些调整,如分区策略、索引...

    mysql转换为doc文档

    2. 数据库表及字段的字符集应与服务器配置一致,或至少支持中文。 3. ODBC数据源的字符集设置应与数据库字符集匹配,对于包含中文的数据,应设为GB2313或更通用的GBK。 4. 转换工具或程序也需配置相应的字符编码,...

    完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题

    标题中的“完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题”涉及到的是在MySQL数据库中处理字符编码转换的问题,特别是针对从不同字符集(如GBK或Latin1)转换到UTF8的情况,以解决乱码问题。描述中提到的...

    字符集相关学习探讨(字符集相关定义以及MySQL中字符集分析)

    ### 字符集相关学习探讨(字符集相关定义以及MySQL中字符集分析) #### 一、字符集基础概念 1. **字节(Byte)**: 计算机存储的基本单位,一个字节等于8位(bit)。在计算机科学中,用于衡量数据存储量的大小。 2. **...

    mysql字符集等常用命令

    ### MySQL字符集设置与解决UTF-8乱码问题 在MySQL数据库中,字符集的设置对于数据的正确存储和检索至关重要。特别是在使用UTF-8字符集时,如果配置不当很容易出现乱码问题。本文将详细介绍如何通过MySQL命令来正确...

    查看三种MySQL字符集的方法(转).docx

    ### 查看三种MySQL字符集的方法 #### 一、查看MySQL数据库服务器和数据库MySQL字符集 在MySQL中,可以通过执行特定的SQL命令来查看与字符集相关的配置信息。这些信息对于理解数据库如何处理文本数据至关重要。 - ...

    MySQL字符集[参考].pdf

    MySQL字符集是数据库管理系统中处理字符编码的重要概念,对于存储和检索包含多种语言或特殊字符的数据至关重要。在MySQL中,有几种主要的字符集用于不同的目的: 1. `character-set-server` 或 `default-character-...

    mysql字符集与比对方法collation

    MySQL字符集与比对方法Collation是数据库设计中的重要概念,尤其在处理多语言或有特殊字符需求的数据时。字符集(Character Set)定义了数据的编码方式,而比对方法(Collation)则规定了字符的排序和比较规则。在...

    oracle中的BLOB(照片)转换到mysql中

    - **编码问题**:确保数据在传输过程中保持一致的编码格式,避免因为字符集不匹配导致的问题。 - **错误处理**:在代码中添加适当的错误处理,如文件读写失败、数据库连接问题等。 总结来说,从Oracle的BLOB类型...

    MySQL数据库字符集的问题研究.pdf

    #### 一、MySQL字符集概述 MySQL数据库是瑞典MySQL AB公司开发的一款小型关系型数据库管理系统,因其速度快、易用性好、支持SQL、网络支持性好、可移植性好及费用低廉等特点,在互联网领域得到了广泛应用。MySQL...

    深入Mysql字符集设置分析

    总的来说,理解MySQL字符集和字符序的概念,正确配置相关系统变量,以及在操作数据时关注字符集的转换,是确保数据完整性和正确性的关键。对于处理多语言或特殊字符的数据,尤其需要重视字符集设置,以避免潜在的...

Global site tag (gtag.js) - Google Analytics