今天看了下DiscuzX3.2的备份功能。
进入后台,进行了备份测试,选择了 16进制方式。
备份后,进入/data/back_xxxx/ 查看刚刚备份的数据文件。
发现所有 char或text 数据类型的都是以16进制的方式存储的, 用16进制,可以把中文字符很好的转换成[0-9a-f]这16个数字加英文字符,这样就能很好的解决了因中文字符带来的乱码问题了。
admincp_db.php
里通过判断 usehex 来判断是否用16进制,
在遍历数据表是,通过判断字段的类型是否是 char 或 text 来实施16进制转换
当然,要完全避免乱码,还得数据库编码,数据表编码,脚本编码要,以及导入的sql数据载体编码和设置的编码要一致
函数 bin2hex 把字符串转成16进制字符串;hex2bin 则把16进制还原成字符串。
strexists() 函数判断字符串是否存在
From sogaoyou.com 搜高邮