就能够顺利导入低版本数据库了……
数据库部分算是搞定了…… 但 PHP 编程方面要如何注意呢? 还得劳您翻下页…… http://www.knowsky.com ============================================= PHP 文件编码
是否所有 PHP 文件都必须转成 UTF8 编码呢? 凉鞋告诉您是 NO ……
这么说吧…… 如果文件中包含需要显示出来的中文字符…… 就应该转为 UTF8 编码…… 举例子吧:
// 我是凉鞋 echo time(); 上面的代码虽有代码…… 但是由于存在于注释中…… 不会输出…… 所以这个页面可以不用转换为 UTF8 格式……
再如:
echo "我是凉鞋"; 这个明显有中文字符输出…… 您还是老老实实转换为 UTF8 吧……
当然现在很多程式都采用模板(语言包)技术…… 程式(非语言包文件)里是看不到任何供输出的字符的…… 这样以来我们只需要将语言包文件转成 UTF8 编码即可…… (语言包的优势就在这里啊…… 啊哈哈哈哈哈……) ''http://www.knowsky.com ==================================================
UTF8 中文截取
由于 UTF8 使用三个字节…… 所以传统的 substr 函数就没辙了…… 很多高手都写了 UTF8 中文字符截取函数…… 这里送上几种:
1.先算再取
/** * Author : Dummy | Zandy * Email : lianxiwoo@gmail.com | hotmail.com * Create : 200512 * Usage : echo join('''', String::subString_UTF8(''汉字'', 0, 1)); */ ini_set(''display_errors'', 1); error_reporting(E_ALL ^ E_NOTICE); class String { function subString_UTF8($str, $start, $lenth) { $len = strlen($str); $r = array(); $n = 0; $m = 0; for($i = 0; $i < $len; $i++) { $x = substr($str, $i, 1); $a = base_convert(ord($x), 10, 2); $a = substr(''00000000''.$a, -8); if ($n < $start){ if (substr($a, 0, 1) == 0) { }elseif (substr($a, 0, 3) == 110) { $i += 1; }elseif (substr($a, 0, 4) == 1110) { $i += 2; } $n++; }else{ if (substr($a, 0, 1) == 0) { $r[] = substr($str, $i, 1); }elseif (substr($a, 0, 3) == 110) { $r[] = substr($str, $i, 2); $i += 1; }elseif (substr($a, 0, 4) == 1110) { $r[] = substr($str, $i, 3); $i += 2; }else{ $r[] = ''''; } if (++$m >= $lenth){ break; } } } return $r; } // End subString_UTF8 }// End String echo join('''', String::subString_UTF8(''汉字'', 0, 1)); 2.先截后取 这种方式凉鞋觉得很巧妙…… 用传统截取函数先截断…… 然后判断中文单个字符是否被分割开…… 如果是……则处理之…… 要特别注意的是 substr 函数的第三个参数必须大于 3 …… 至于为什么不用凉鞋解释了吧?
// A trim function to remove the last character of a utf-8 string // by following instructions on http://en.wikipedia.org/wiki/UTF-8 // dotann // usage: $str = utf8_trim(substr($str,0,50)); function utf8_trim($str) { $len = strlen($str); for ($i=strlen($str)-1; $i>=0; $i-=1){ $hex .= '' ''.ord($str[$i]); $ch = ord($str[$i]); if (($ch & 128)==0) return(substr($str,0,$i)); if (($ch & 192)==192) return(substr($str,0,$i)); } return($str.$hex); } $str = ''汉字''; echo utf8_trim(substr($str,0,3)); 3.还有其它方法, 比如 007pig 为我们 vBulletin 中文版里所写的函数…… 短小精悍…… 源码不便放出…… 对不住鸟……
今天就写到这里吧…… 还有转码等问题没有写…… 最近忙…… 有空继续整理…… http://www.quchao.com/?p=6&pp=1 |