【Mysql】iconv 轉換字符集

楊奇龍發表於2011-10-27
學習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:生產環境慎用!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-709812/,如需轉載,請註明出處,否則將追究法律責任。

相關文章