【Mysql】iconv 转换字符集

学习mysql字符集转换的过程中,看到有些网络资料有使用iconv 命令转换字符集的,所以这里学习一下,iconv 的使用!(ps 网络中关于使用iconv 转换mysqldump 出的文件不靠谱,随后的文章会介绍)

iconv的用法:

用法: iconv [选项...] [文件...]

Convert encoding of given files from one encoding to another.

输入/输出格式规范:

  -f, --from-code=NAME       原始文本编码

  -t, --to-code=NAME         输出编码

信息:

  -l, --list                 列举所有已知的字符集

输出控制:

  -c                         从输出中忽略无效的字符

  -o, --output=FILE          输出文件

  -s, --silent               suppress warnings

      --verbose              打印进度信息

  -?, --help                 给出该系统求助列表

      --usage                给出简要的用法信息

  -V, --version              打印程序版本号

  

mysql> use latin

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select * from ytab;

+--------+----------------+

| name   | val            |

+--------+----------------+

| yangql | 杨奇龙      | 

| cat    | 猫            | 

| lily   | lily           | 

| 32     | shengxiaonan32 | 

+--------+----------------+

4 rows in set (0.00 sec)

导出数据库latin中的ytab表:

[root@rac3 ~]# mysqldump -h127.0.0.1   -uroot  latin  ytab > create_la_ytab1.sql                              

[root@rac3 ~]# cat create_la_ytab1.sql 

-- MySQL dump 10.11

-- Host: 127.0.0.1    Database: latin

-- ------------------------------------------------------

-- Server version       5.0.45

-- Table structure for table `ytab`

--

DROP TABLE IF EXISTS `ytab`;

CREATE TABLE `ytab` (

  `name` varchar(15) default NULL,

  `val` varchar(15) default NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- Dumping data for table `ytab`

LOCK TABLES `ytab` WRITE;

/*!40000 ALTER TABLE `ytab` DISABLE KEYS */;

INSERT INTO `ytab` VALUES ('yangql','??¨?¥?é??'),('cat','???'),('lily','lily'),('32','shengxiaonan32'); --出现乱码

/*!40000 ALTER TABLE `ytab` ENABLE KEYS */;

UNLOCK TABLES;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

-- Dump completed on 2011-10-27 13:40:25

[root@rac3 ~]# iconv -t latin1 -f utf8 -c create_la_ytab1.sql > ytab-latin.sql            

[root@rac3 ~]# cat ytab-latin.sql

-- MySQL dump 10.11

-- Host: 127.0.0.1    Database: latin

-- ------------------------------------------------------

-- Server version       5.0.45

-- Table structure for table `ytab`

DROP TABLE IF EXISTS `ytab`;

CREATE TABLE `ytab` (

  `name` varchar(15) default NULL,

  `val` varchar(15) default NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- Dumping data for table `ytab`

LOCK TABLES `ytab` WRITE;

/*!40000 ALTER TABLE `ytab` DISABLE KEYS */;

INSERT INTO `ytab` VALUES ('yangql','杨'),('cat',',('lily','lily'),('32','shengxiaonan32');--引起部分数据丢失。。

/*!40000 ALTER TABLE `ytab` ENABLE KEYS */;

UNLOCK TABLES;

-- Dump completed on 2011-10-27 13:40:25

[root@rac3 ~]# 

note:生产环境慎用!

时间: 2024-12-06 19:11:45

【Mysql】iconv 转换字符集的相关文章

Mysql基础之字符集与乱码

原文:Mysql基础之字符集与乱码 Mysql的字符集设置非常灵活 可以设置服务器默认字符集 数据库默认字符集 表默认字符集 列字符集 如果某一个级别没有指定字符集,则继承上一级.   以表声明utf8为例: 存储的数据在表中,最终是utf8; 1:告诉服务器,我给你发送的数据是什么编码的? character_set_client 2:告诉转换器,转换成什么编码? Character_set_connection 3:查询的结果用什么编码? Character_set_results    如

PHP编码转换函数 自动转换字符集支持数组转换_php技巧

复制代码 代码如下: // 自动转换字符集 支持数组转换 function auto_charset($fContents, $from='gbk', $to='utf-8') { $from = strtoupper($from) == 'UTF8' ? 'utf-8' : $from; $to = strtoupper($to) == 'UTF8' ? 'utf-8' : $to; if (strtoupper($from) === strtoupper($to) || empty($fCo

mysql时间转换函数的用法

mysql时间转换函数的用法 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK(2007-10-31); -> 4 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, --6= 星期天). mysql> select WEEKDAY('2007-10-31 13:05:00'); -> 2 mysql> select WEEKDAY('2007-10

RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情

RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情 1. 基本原则 2. 三个条件的说明 2.1 应用客户端 2.2 应用到 RDS MySQL 实例的连接 2.3 RDS 实例配置 3. 通过 set names 命令设置会话字符集 1. 基本原则 如果要实现存储 emoji 表情到 RDS for MySQL 实例,需要应用客户端.到 RDS for MySQL 实例的连接.RDS 实例内部 3 个方面统一使用或者支持 utf8mb4 字符集. 注:关于 utf8

utf-8-xmapp中mysql的默认字符集的修改问题

问题描述 xmapp中mysql的默认字符集的修改问题 在机器上装了xmapp时,并没有提示要为mysql设置字符集. 使用如下命令发现. show variables like '%char%' 结果如下: Variable_name Value character_set_client utf8mb4 character_set_connection utf8mb4 character_set_database utf8 character_set_filesystem binary cha

mysql 时间转换函数的使用方法第1/2页_Mysql

mysql 时间转换函数的用法 DAYOFWEEK(date)   返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准.   mysql> select DAYOFWEEK(2007-10-31);   -> 4 WEEKDAY(date)   返回date的星期索引(0=星期一,1=星期二, --6= 星期天).   mysql> select WEEKDAY('2007-10-31 13:05:00');   -> 2 mysq

Mysql无法初始化字符集的问题

如果存在字符集问题,可能会遇到下述错误: MySQL连接失败:无法初始化字符集charset_name. 导致该错误的原因: ·字符集为多字节字符集,但客户端不支持该字符集.在该情况下,需要使用"--with-charset=charset_name"或"--with-extra-charsets=charset_name"选项运行configure以重新编译客户端. 所有的标准MySQL二进制文件均是采用"--with-extra-character-s

MySQL存储过程的字符集问题

由于存储过程中定义参数时,无法定义其字符集,因此调用存储过程的时候,会默认读取全局变量character_set_server,而且还是只读取mysqld启动时该全局变量的值作为存储过程中默认的传输字符集.因此,如果数据表/字段使用系统默认的字符集(比如latin1)的话,调用存储过程更新一些非英文的字符串字段时,就不会发生问题:但是,如果数据表/字段的字符集不是系统默认的字符集(比如默认是latin1,数据表使用的是utf8),就会出现问题了.解决办法是:在my.cnf(windows下是my

解析mysql 5.5字符集问题_Mysql

安装了个5.5版本的mysql,字符集出现了问题,之前的mysql服务器都是通过在my.cnf配置文件中进行配置便可,可是今儿怎么着都不行一直报错: 当时系统中也没有配置错误日志,所以只能是先配置下错误日志的位置,看看到底是哪里出错了: 复制代码 代码如下: user            = mysqlpid-file        = /var/run/mysqld/mysqld.pidsocket          = /var/run/mysqld/mysqld.sockport