`
ShellyLi
  • 浏览: 114596 次
  • 性别: Icon_minigender_2
  • 来自: 山东
社区版块
存档分类
最新评论

MySQL字符集及MySQL编码转换

阅读更多
今天找到这篇文章,里面提到从latin1到UTF8的MySQL编码转换。收藏一下,最近要将所有的数据库都转一次,一直错误的使用latin1,再不转以后麻烦大了。

出处:未知

个人建议,数据库字符集尽量使用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直接插入数据:

<?php
mysql_connect('localhost','user','password');
mysql_select_db('my_db');

//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
//它的作用是设置本次数据库联接过程中,数据传输的默认字符集
mysql_query("set names utf8;");

//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
mysql_query(mb_convert_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
?>通过页面提交插入数据:

<?php
//输出本页编码为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">
<form action="" method="post">
<input type="text" name="name" value="">
<input type="submit" value='submit'>
</form>自此,使用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 -hlocalhost -uroot my_db < new.sql大功告成!

分享到:
评论

相关推荐

    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字符集等常用命令

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

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

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

    mysql字符集与比对方法collation

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

    MySQL字符集[参考].pdf

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

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

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

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

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

    深入Mysql字符集设置分析

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

    MySQL字符集的基本类型与统一字符集分析

    MySQL字符集是数据库管理系统中处理文本数据的关键组成部分,它决定了数据如何被编码、存储和检索。MySQL支持多种字符集,包括但不限于拉丁文、中文、日文等多国语言的编码方式。本文主要介绍MySQL字符集的基本类型...

    mysql字符集乱码问题解决方法介绍

    MySQL字符集乱码问题主要涉及字符编码的设置和匹配,这些问题通常出现在数据的输入、存储和输出过程中。本文将深入探讨MySQL中的字符集配置以及如何解决相关乱码问题。 1. **MySQL字符集架构** - **服务器字符集**...

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

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

    mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    mysql将表的字符编码转换成utf-8 代码如下:alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 代码如下:mysql&gt; show variables like’...

    mysql字符集和校对规则(Mysql校对集)

    MySQL中的字符集(charset)和校对规则(collation)是数据库管理中非常重要的概念,尤其是在处理多语言或对字符敏感的应用场景下。字符集决定了数据如何被编码和存储,而校对规则则定义了字符之间的比较规则。 ...

Global site tag (gtag.js) - Google Analytics