SlideShare a Scribd company logo
1 of 59
编码与主库转码编码与主库转码
技术部技术部 kimkim
一、编码简介一、编码简介
计算机编码计算机编码
 位:位: BitBit
 字节:字节: ByteByte
 字符:字符: CharChar
 字符集:字符集: ASCIIASCII ,, GBKGBK ,, UnicodeUnicode …………
ASCIIASCII
 标准标准 ASCIIASCII :: 77 位容器,位容器, 0x00-0x7F0x00-0x7F ,表示,表示 128128 个个
字符字符
 拓展拓展 ASCIIASCII :新增定义:新增定义 128128 到到 255255 的字符的字符
 比如“比如“ AA ”” :: echo chr(65);echo chr(65); 或者或者 echo "x41";echo "x41";
ISO-8859-1ISO-8859-1
 最著名的最著名的 ASCIIASCII 拓展(拓展( latin1latin1 ))
 88 位容器,位容器, 0x00-0xFF0x00-0xFF
 存储上完全兼容其它编码存储上完全兼容其它编码
 MySQLMySQL 的默认编码,部分浏览器默认编码的默认编码,部分浏览器默认编码
ISO-8859-1ISO-8859-1 为什么能保存中文为什么能保存中文
??
 ““ 中文”:中文”: GB2312GB2312 编码是编码是 "d6d0 cec4“"d6d0 cec4“
 在在 ISO-8859-1ISO-8859-1 里面就成了里面就成了 "d6 d0 ce c4""d6 d0 ce c4"
UnicodeUnicode
 拓展自拓展自 ASCIIASCII ,范围,范围 0x000000 - 0x10FFFF0x000000 - 0x10FFFF
 可容纳可容纳 11141121114112 个字符个字符
 转码映射关系转码映射关系 codepagecodepage 的基础的基础
 JAVAJAVA 及部分高级语言的内部编码及部分高级语言的内部编码
万能的万能的 UTF-8UTF-8
 使用变长使用变长 8bit8bit 模板来传输和存储模板来传输和存储 UnicodeUnicode
 11 字节兼容字节兼容 ASCIIASCII ,希腊文字用,希腊文字用 22 字节,中文用字节,中文用 33
字节,辅助平面字符用字节,辅助平面字符用 44 字节字节
 UTF-8UTF-8 只是编码方式,而不是字符集只是编码方式,而不是字符集
 http://www.ietf.org/rfc/rfc3629.txthttp://www.ietf.org/rfc/rfc3629.txt
万能的万能的 UTF-8UTF-8
 BOMBOM (( Byte Order MarkByte Order Mark )问题演示)问题演示
UnicodeUnicode 转转 UTF-8UTF-8
 00000000 - 0000007F : 0xxxxxxx00000000 - 0000007F : 0xxxxxxx
 00000080 - 000007FF : 110xxxxx 10xxxxxx00000080 - 000007FF : 110xxxxx 10xxxxxx
 00000800 - 0000FFFF : 1110xxxx 10xxxxxx 10xxxxxx00000800 - 0000FFFF : 1110xxxx 10xxxxxx 10xxxxxx
 00010000 - 001FFFFF : 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx00010000 - 001FFFFF : 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UnicodeUnicode 转转 UTF-8UTF-8
 ““ 汉”:汉”: UnicodeUnicode 是是 0x6C490x6C49
 0x6C490x6C49 二进制是:二进制是: 0110 1100 0100 10010110 1100 0100 1001 ,,
 代替代替 33 字节模板后得到:字节模板后得到:
11100110 10110001 1000100111100110 10110001 10001001 ,即,即 E6 B1 89E6 B1 89 。。
兼容关系兼容关系
 ASCII ISO-8859-1 UTF-8⊆ ⊆ASCII ISO-8859-1 UTF-8⊆ ⊆
GB2312GB2312
 俗称俗称““简体中文简体中文””
 双字节:双字节: 0xB0A1 - 0xF7FE0xB0A1 - 0xF7FE
 67636763 个汉字和个汉字和 682682 个符号个符号
GBKGBK
 包括简体、繁体、日文、韩文的大集合包括简体、繁体、日文、韩文的大集合
 双字节:双字节: 0x8140 - 0xFEFE0x8140 - 0xFEFE
 2100321003 个汉字和个汉字和 883883 个图形符号个图形符号
GB18030GB18030
 包括汉字和少数民族文包括汉字和少数民族文
 单字节单字节:: 0x000x00 –– 0x7F0x7F ,(兼容,(兼容 ASCIIASCII ))
 双字节:高位从双字节:高位从 81-FE81-FE ,低位从,低位从 40-FE40-FE (兼容(兼容
GBKGBK ))
 四字节:四字节: 0x81308130 - 0xFE39FE390x81308130 - 0xFE39FE39
 7024470244 个汉字个汉字
GB18030 moreGB18030 more……
 实际上是实际上是 UTFUTF 的一种,完全支持的一种,完全支持 UnicodeUnicode 的全部的全部
统一汉字统一汉字
 存储空间远小于存储空间远小于 UTF-8UTF-8
 法定标准法定标准
兼容关系兼容关系
 ASCII GB2312 GBK GB18030⊆ ⊆ ⊆ASCII GB2312 GBK GB18030⊆ ⊆ ⊆
ANSIANSI 字符代码字符代码
 使用使用 22 个字节代表一个字符的编码统称个字节代表一个字符的编码统称
 如如 GB2312GB2312 ,, Big5Big5 ,, JISJIS 等等等等
 不同不同 ANSIANSI 编码之间一般互不兼容编码之间一般互不兼容
 ANSI CANSI C
ANSI vs UnicodeANSI vs Unicode
 ANSIANSI 编码表示英文字符时用一个字节,表示中文编码表示英文字符时用一个字节,表示中文
用两个字节用两个字节
 UnicodeUnicode 不管表示英文字符还是中文都是用两个字不管表示英文字符还是中文都是用两个字
节来表示。节来表示。
记事本记事本
 ASCIIASCII
 UnicodeUnicode (( UTF-16 LEUTF-16 LE ))
 Unicode big endianUnicode big endian (( UTF-16 BEUTF-16 BE ))
 UTF-8UTF-8
二、转码介绍二、转码介绍
codepagecodepage
 微软发明的,各国的文字编码和微软发明的,各国的文字编码和 UnicodeUnicode 之间的之间的
映射表映射表
 GBKGBK :: codepage=936codepage=936
 UTF-8UTF-8 :: codepage=65001codepage=65001
转码过程转码过程
 其中一个公共方法是通过其中一个公共方法是通过 UnicodeUnicode 作为中间码作为中间码
 GBK/GB2312 <-> Unicode <-> UTF8GBK/GB2312 <-> Unicode <-> UTF8
 GBKGBK 和和 UnicodeUnicode 之间的映射表之间的映射表
PHPPHP 转码转码
 iconviconv :依赖于:依赖于 libiconvlibiconv ,速度快,不稳定,速度快,不稳定
 mbstringmbstring :无依赖,速度较快,稳定:无依赖,速度较快,稳定
mbstringmbstring 介绍介绍
 mb_list_encodingsmb_list_encodings :返回所有支持编码数组:返回所有支持编码数组
 mb_detect_encodingmb_detect_encoding :检测字符的编码:检测字符的编码
 mb_convert_encodingmb_convert_encoding :转换字符的编码:转换字符的编码
 mb_substrmb_substr :以特定编码截取字符串:以特定编码截取字符串
mb_detect_encodingmb_detect_encoding
 GBK/GB18030GBK/GB18030 :返回:返回 CP936CP936
 GB2312GB2312 :返回:返回 EUC-CNEUC-CN
 Big5Big5 :返回:返回 EUC-TWEUC-TW
 strictstrict 参数的意义参数的意义
用户看到网页的过程用户看到网页的过程
 表单编码表单编码
 PHPPHP 内部编码内部编码
 数据库文件编码数据库文件编码
 PHPPHP 内部编码内部编码
 HTMLHTML 文件编码(文件编码( Content-TypeContent-Type ))
 浏览器编码浏览器编码
乱码乱码
 一般乱码“一般乱码“ 我和ä½æˆ‘和佔 :比如用 Big5 解析 GBK
 不兼容乱码“????”:比如把中文从不兼容乱码“????”:比如把中文从 UTF-8UTF-8 转转
latin1latin1 导致失真导致失真
 空格或方格“□”:比如用空格或方格“□”:比如用 GBKGBK 显示显示 UTF-8UTF-8 中的日中的日
文文
三、主库转码三、主库转码
WhyWhy ??
 主库、主表编码混乱主库、主表编码混乱
 主库臃肿,垃圾表多主库臃肿,垃圾表多
 Latin1Latin1 过度包容过度包容
 历史原因,使用了历史原因,使用了 GBKGBK 编码来存储编码来存储
难点难点
 数据库庞大数据库庞大
 数据非常重要,一致性要求苛刻数据非常重要,一致性要求苛刻
 涉及面广,各种应用,新老接口涉及面广,各种应用,新老接口
 时间紧迫,测试时间间隔长时间紧迫,测试时间间隔长
 MysqlMysql 的的 BinlogBinlog 格式复杂,格式复杂, debugdebug 异常困难异常困难
 切换直接影响线上服务切换直接影响线上服务
前期准备前期准备
 确认可以移走的表确认可以移走的表
 确认可以废弃掉的表确认可以废弃掉的表
 确认不需要转码,本身就是确认不需要转码,本身就是 utf-8utf-8 的表的表
 确认只含数字和字母,可直接转确认只含数字和字母,可直接转 utf-8utf-8 的表的表
 确认需要程序开发转确认需要程序开发转 utf-8utf-8 的表的表
 确认所有类主表,需要重点关注的表确认所有类主表,需要重点关注的表
执行步骤执行步骤
 1.1. 移走不应放在主库的表移走不应放在主库的表
执行步骤执行步骤
 2.2. 相关项目相关项目“页面转码”和““页面转码”和“ PHPPHP 文件转码”文件转码”
均不影响数据库转码,提前执行均不影响数据库转码,提前执行
执行步骤执行步骤
 3.3. DBADBA 进行数据备份、测试数据导出、进行数据备份、测试数据导出、
测试库配置 等等测试库配置 等等
 导出数据命令:导出数据命令:
 # latin1# latin1 表表
 set names latin1; select * from $table into outfile '$table.latin1' fields terminated byset names latin1; select * from $table into outfile '$table.latin1' fields terminated by
'<#>' lines terminated by '<%>n';'<#>' lines terminated by '<%>n';
 # utf8# utf8 表表
 set names utf8;select * from $table into outfile '$table.utf8' fields terminated by '<#>'set names utf8;select * from $table into outfile '$table.utf8' fields terminated by '<#>'
lines terminated by '<%>n';lines terminated by '<%>n';
 ## 其他库其他库
 mysqldump -S $socket --lines-terminated-by='<%>n' --fields-terminated-by='<#>'mysqldump -S $socket --lines-terminated-by='<%>n' --fields-terminated-by='<#>'
-N --single-transaction --default-character-set=utf8 -T $data/$db/ $db-N --single-transaction --default-character-set=utf8 -T $data/$db/ $db
执行步骤执行步骤
 4.4. 创建转码脚本,对“导出的测试数据”创建转码脚本,对“导出的测试数据”
进行转码,导出初始测试库进行转码,导出初始测试库
 ## 主表转码主表转码
 cat $table.latin1 | php /home/xxx/bin/m.php > $table.txtcat $table.latin1 | php /home/xxx/bin/m.php > $table.txt
 ## 其他表转码其他表转码
 cat $table.latin1 | php /home/xxx/bin/s.php > $table.txtcat $table.latin1 | php /home/xxx/bin/s.php > $table.txt
 ## 导入数据导入数据
 LOAD DATA INFILE '$table.txt' ignore INTO TABLE $table CHARACTER SETLOAD DATA INFILE '$table.txt' ignore INTO TABLE $table CHARACTER SET
UTF8 fields terminated by '<#>' lines terminated by '<%>n';UTF8 fields terminated by '<#>' lines terminated by '<%>n';
执行步骤执行步骤
 5.5. 通过测试库,测试各应用程序通过测试库,测试各应用程序
在在 utf-8utf-8 环境下的工作情况环境下的工作情况
 SET NAMES latin1SET NAMES latin1 改为改为 SET NAMES utf8SET NAMES utf8
 去掉去掉 mb_convert_encoding($str, 'UTF-8', 'GBK');mb_convert_encoding($str, 'UTF-8', 'GBK');
 为上述修改加上开关,方便回滚为上述修改加上开关,方便回滚
执行步骤执行步骤
 6.6. 修改由于修改由于 latin1latin1 转转 utf-8utf-8 之后,由于之后,由于
长度增加导致的长度增加导致的 bugbug ,如标签的截取修正,如标签的截取修正
 旧旧 tagtag :: latin1 varchar(10)latin1 varchar(10)
 新 tag : utf-8 varchar(10)
 兼容新旧兼容新旧 tagtag 的简单办法 :的简单办法 : $tag = substr($tag, 0, 15);$tag = substr($tag, 0, 15);
 兼容会导致乱码么?兼容会导致乱码么?
执行步骤执行步骤
 7.7. DBADBA 导出导出 binlogbinlog 准备进行转码准备进行转码
 导入导出 binlog 的命令:
 mysql -f -A -h xxx.xxx.xxx.xxx -P xx --default-character-set=utf8 > sync.sql
 mysql -f -A -h xxx.xxx.xxx.xxx -P xx --default-character-set=utf8 < sync.sql
执行步骤执行步骤
 8.8. 开发这边创建开发这边创建 binlogbinlog 转码脚本转码脚本
 BinlogBinlog 转码问题转码问题 11 ::
 由于使用外部转码,而非由于使用外部转码,而非 mysqlmysql 内部转码,导致的转义符 “内部转码,导致的转义符 “ ”” 被破被破
坏的问题坏的问题
$str = preg_replace("/(*)',/", "',", $str);$str = preg_replace("/(*)',/", "',", $str);
 BinlogBinlog 转码问题转码问题 22 ::
//// 按指定行结束符读取每行的按指定行结束符读取每行的 PHPPHP 函数函数
function getline($fp, $delim = "n")function getline($fp, $delim = "n")
{{
$result = '';$result = '';
$ds = strlen($delim);$ds = strlen($delim);
while (!feof($fp)) {while (!feof($fp)) {
$result .= fgetc($fp);$result .= fgetc($fp);
if ($delim === substr($result, -$ds)) {if ($delim === substr($result, -$ds)) {
return substr($result, 0, -$ds);return substr($result, 0, -$ds);
}}
}}
return $result;return $result;
}}
 BinlogBinlog 转码问题转码问题 33 ::
// binlog// binlog 的的 sqlsql 语句被 “语句被 “ n”n” 截为多行的问题截为多行的问题
if (substr($str, -3) == "',n") {if (substr($str, -3) == "',n") {
$str = substr($str, 0, -3);$str = substr($str, 0, -3);
$subfix = "',n";$subfix = "',n";
}}
//// 转码后再把转码后再把 nn 拼回去拼回去
$str = safeEncoding($str);$str = safeEncoding($str);
$str .= $subfix;$str .= $subfix;
 binlogbinlog 转码脚本核心算法:转码脚本核心算法: binlog.phpbinlog.php
执行步骤执行步骤
 9.9. DBADBA 对对 binlogbinlog 进行转码,实现增量同步进行转码,实现增量同步
 在在 binlogbinlog 转码之前还需要过滤掉转码之前还需要过滤掉 MySQLMySQL 的会话配置,否则在导入时的会话配置,否则在导入时
将出现编码混乱的情况。将出现编码混乱的情况。
 mysqlbinlog $bin | sed '/@@session.character_set_client/d;//*!Cmysqlbinlog $bin | sed '/@@session.character_set_client/d;//*!C
/d;/^#/d;/session.sql_mode/d' | php /home/xxx/bin/binlog.php >/d;/^#/d;/session.sql_mode/d' | php /home/xxx/bin/binlog.php >
sync.sqlsync.sql
执行步骤执行步骤
 10.10. 检查同步情况,抽样检查,反复检查同步情况,抽样检查,反复 debugdebug
执行步骤执行步骤
 11.11. 制定切换计划制定切换计划和回滚方案和回滚方案
 回滚方案:回滚方案:
 1.1. 代码回退代码回退
 2. MySQL-VIP2. MySQL-VIP 切换回原主库所在机器(切换回原主库所在机器( 5min5min ))
 3.3. 恢复服务并测试确认恢复服务并测试确认
执行步骤执行步骤
 12.12. 选个好日子执行切换选个好日子执行切换
 0:000:00 停止上传服务,停止视频转换,停止视频抓取,停止视频修改更新功能,停止索停止上传服务,停止视频转换,停止视频抓取,停止视频修改更新功能,停止索
引更新。这时还会有视频继续上传进来,特别是一些大视频引更新。这时还会有视频继续上传进来,特别是一些大视频
 1:001:00 停审核,停止管理后台使用,播放页停审核,停止管理后台使用,播放页 // 专辑播放页缓存改为专辑播放页缓存改为 11 小时,停止人气更小时,停止人气更
新,停止导入初审脚本新,停止导入初审脚本
 1:301:30 新库全量同步,增量同步新库全量同步,增量同步
 2:002:00 完成最后一次同步后,把主表最后完成最后一次同步后,把主表最后 100100 万数据重新导入,确保主表万无一失。万数据重新导入,确保主表万无一失。
 2:302:30 最后一次检查数据,切换数据库最后一次检查数据,切换数据库
 3:003:00 各应用更新代码,正式切换至各应用更新代码,正式切换至 UTF-8UTF-8 环境环境
 3:00-4:303:00-4:30 测试测试
 4:304:30 之前停止的服务逐步开放,播放页之前停止的服务逐步开放,播放页 // 专辑播放页缓存改回专辑播放页缓存改回 33 天天
 5:305:30 上线后最后自测,通知客服,回复审核上线后最后自测,通知客服,回复审核
 6:006:00 高高兴兴回家高高兴兴回家
总结总结
 1.1. 抓主要矛盾抓主要矛盾
 2.2. 优化:提前提示用户在切换期间不要上传长视频优化:提前提示用户在切换期间不要上传长视频
 3.3. 旧代码必须下线,旧接口必须升级旧代码必须下线,旧接口必须升级
 4.4. 经验虽好,可是不要太多经验虽好,可是不要太多
F&QF&Q
谢谢!!!谢谢!!!

More Related Content

What's hot (8)

Heap exploitation
Heap exploitationHeap exploitation
Heap exploitation
 
nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言
 
密碼學漏洞與他們的產地 Crypto fail and where to find them
密碼學漏洞與他們的產地   Crypto fail and where to find them密碼學漏洞與他們的產地   Crypto fail and where to find them
密碼學漏洞與他們的產地 Crypto fail and where to find them
 
Vim Hacks
Vim HacksVim Hacks
Vim Hacks
 
第12讲 Acl
第12讲 Acl第12讲 Acl
第12讲 Acl
 
Mongo db架构之优先方案
Mongo db架构之优先方案Mongo db架构之优先方案
Mongo db架构之优先方案
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Mongo db部署架构之优先方案
Mongo db部署架构之优先方案Mongo db部署架构之优先方案
Mongo db部署架构之优先方案
 

Viewers also liked

Ppp Canliner Presentation 6 09
Ppp Canliner Presentation 6 09Ppp Canliner Presentation 6 09
Ppp Canliner Presentation 6 09
Theodore Lundy
 
FLIBS 2008 Presentation / FTZ &amp; Yacht Importations
FLIBS 2008 Presentation / FTZ &amp; Yacht ImportationsFLIBS 2008 Presentation / FTZ &amp; Yacht Importations
FLIBS 2008 Presentation / FTZ &amp; Yacht Importations
mterorotua
 
Présentation Manacoach
Présentation ManacoachPrésentation Manacoach
Présentation Manacoach
Manacoach
 
Basic word01
Basic word01Basic word01
Basic word01
adisg
 
Deca Dramatic Traditions-Visual Merchandising , Display Pictures
Deca Dramatic Traditions-Visual Merchandising , Display PicturesDeca Dramatic Traditions-Visual Merchandising , Display Pictures
Deca Dramatic Traditions-Visual Merchandising , Display Pictures
mw
 
Greener Driving And Telecommunications Greenfleet Newsletter August 2009
Greener Driving And Telecommunications   Greenfleet Newsletter August 2009Greener Driving And Telecommunications   Greenfleet Newsletter August 2009
Greener Driving And Telecommunications Greenfleet Newsletter August 2009
Turlough Guerin
 
Oagee 2012
Oagee 2012Oagee 2012
Oagee 2012
komox37
 
Photo Album
Photo AlbumPhoto Album
Photo Album
adyelw
 
Sreerag parallel programming
Sreerag   parallel programmingSreerag   parallel programming
Sreerag parallel programming
Sreerag Gopinath
 
Sreerag dot net - objectives & architecture
Sreerag   dot net - objectives & architectureSreerag   dot net - objectives & architecture
Sreerag dot net - objectives & architecture
Sreerag Gopinath
 

Viewers also liked (20)

Sreerag what is a web service
Sreerag   what is a web serviceSreerag   what is a web service
Sreerag what is a web service
 
The Great Depression
The Great DepressionThe Great Depression
The Great Depression
 
Idioma ii powerpoint presentation museums
Idioma ii powerpoint presentation museumsIdioma ii powerpoint presentation museums
Idioma ii powerpoint presentation museums
 
Search Engines
Search EnginesSearch Engines
Search Engines
 
Ppp Canliner Presentation 6 09
Ppp Canliner Presentation 6 09Ppp Canliner Presentation 6 09
Ppp Canliner Presentation 6 09
 
FLIBS 2008 Presentation / FTZ &amp; Yacht Importations
FLIBS 2008 Presentation / FTZ &amp; Yacht ImportationsFLIBS 2008 Presentation / FTZ &amp; Yacht Importations
FLIBS 2008 Presentation / FTZ &amp; Yacht Importations
 
Présentation Manacoach
Présentation ManacoachPrésentation Manacoach
Présentation Manacoach
 
Basic word01
Basic word01Basic word01
Basic word01
 
Amarcord Hr
Amarcord HrAmarcord Hr
Amarcord Hr
 
Speaker Video new
Speaker Video newSpeaker Video new
Speaker Video new
 
Deca Dramatic Traditions-Visual Merchandising , Display Pictures
Deca Dramatic Traditions-Visual Merchandising , Display PicturesDeca Dramatic Traditions-Visual Merchandising , Display Pictures
Deca Dramatic Traditions-Visual Merchandising , Display Pictures
 
Greener Driving And Telecommunications Greenfleet Newsletter August 2009
Greener Driving And Telecommunications   Greenfleet Newsletter August 2009Greener Driving And Telecommunications   Greenfleet Newsletter August 2009
Greener Driving And Telecommunications Greenfleet Newsletter August 2009
 
Oagee 2012
Oagee 2012Oagee 2012
Oagee 2012
 
Comms Day Presentation Green Telecom Stream
Comms Day Presentation Green Telecom StreamComms Day Presentation Green Telecom Stream
Comms Day Presentation Green Telecom Stream
 
Photo Album
Photo AlbumPhoto Album
Photo Album
 
Stx meetings-aug11
Stx meetings-aug11Stx meetings-aug11
Stx meetings-aug11
 
Career Development 101
Career Development 101Career Development 101
Career Development 101
 
Sreerag parallel programming
Sreerag   parallel programmingSreerag   parallel programming
Sreerag parallel programming
 
From gandhi to mandela
From gandhi to mandelaFrom gandhi to mandela
From gandhi to mandela
 
Sreerag dot net - objectives & architecture
Sreerag   dot net - objectives & architectureSreerag   dot net - objectives & architecture
Sreerag dot net - objectives & architecture
 

Similar to Character Encoding and Database Transcoding Project

中文编码杂谈
中文编码杂谈中文编码杂谈
中文编码杂谈
Xiaozhe Wang
 
JavaScript现代化排错实践
JavaScript现代化排错实践JavaScript现代化排错实践
JavaScript现代化排错实践
jeffz
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
isnull
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
jay li
 
Ch1 系统启动
Ch1 系统启动Ch1 系统启动
Ch1 系统启动
guest4d1b8c
 

Similar to Character Encoding and Database Transcoding Project (20)

中文编码杂谈
中文编码杂谈中文编码杂谈
中文编码杂谈
 
Encoding
EncodingEncoding
Encoding
 
JavaScript现代化排错实践
JavaScript现代化排错实践JavaScript现代化排错实践
JavaScript现代化排错实践
 
字符集与编码
字符集与编码字符集与编码
字符集与编码
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
Vim hacks
Vim hacksVim hacks
Vim hacks
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
02.python基础
02.python基础02.python基础
02.python基础
 
Character Encoding - Concepts and Practices
Character Encoding - Concepts and PracticesCharacter Encoding - Concepts and Practices
Character Encoding - Concepts and Practices
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
 
Unicode
UnicodeUnicode
Unicode
 
Ch6 教學
Ch6 教學Ch6 教學
Ch6 教學
 
Ch6
Ch6Ch6
Ch6
 
Ch8
Ch8Ch8
Ch8
 
Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
Python 温故
Python 温故Python 温故
Python 温故
 
Ch1 系统启动
Ch1 系统启动Ch1 系统启动
Ch1 系统启动
 
Ipaq with linux
Ipaq with linuxIpaq with linux
Ipaq with linux
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗
 

More from Ho Kim

More from Ho Kim (15)

解决Lvs上行丢包的过程和收获
解决Lvs上行丢包的过程和收获解决Lvs上行丢包的过程和收获
解决Lvs上行丢包的过程和收获
 
40 Powerful Shortcuts of Xcode 6.x
40 Powerful Shortcuts of Xcode 6.x40 Powerful Shortcuts of Xcode 6.x
40 Powerful Shortcuts of Xcode 6.x
 
Project Management Using Redmine
Project Management Using RedmineProject Management Using Redmine
Project Management Using Redmine
 
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and Design
 
Lua 30+ Programming Skills and 20+ Optimization Tips
Lua 30+ Programming Skills and 20+ Optimization TipsLua 30+ Programming Skills and 20+ Optimization Tips
Lua 30+ Programming Skills and 20+ Optimization Tips
 
人人-56 账号拆分项目总结
人人-56 账号拆分项目总结人人-56 账号拆分项目总结
人人-56 账号拆分项目总结
 
OpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceOpenResty/Lua Practical Experience
OpenResty/Lua Practical Experience
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization Skills
 
Video Upload Architecture of 56.com
Video Upload Architecture of 56.comVideo Upload Architecture of 56.com
Video Upload Architecture of 56.com
 
PHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits LevelPHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits Level
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
 
Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence Tutorial
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and Tutorial
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 

Character Encoding and Database Transcoding Project