日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

UTF8下的中文PHP編程

瀏覽:29日期:2024-02-09 17:36:10

前言:

說實話,涼鞋也覺得 UTF8 是好東西……畢竟同屏顯示中日韓對東亞人的吸引力是不小的……(當然好處不僅是這點啦……)不僅是網頁程式……很多應用程式的內核都開始使用 Unicode 編碼……目的是顯而易見的:支援多語言顯示……微軟的所有軟體都是 Unicode 內核……所以日文軟體拿到你的中文 XP 上是可以正常顯示的……而中文 98 就會因為 GB 內核安裝其他語言軟體時造成亂碼……

至于 UTF8 ,可以說是 Unicode 的一個分支,它用三個字節保存一個漢字……(Unicode 用四個字節)應用軟體都集體投奔 Unicode 了……就不允許我們搞網頁程式的用 UTF8?

本文中涼鞋就盡量多方位介紹一下 UTF8 編碼下的 PHP 編程……至于為什么單獨介紹“中文”……一來是因為英文這玩意實在不需要考慮 UTF8 ……除非你準備做多語言系統……(我要發些牢騷:現在的老外寫程式時根本不重視這個問題……)二來是中日韓等多字節語系在 UTF8 編碼下的處理方式其實大同小異……依葫蘆畫瓢即可……好……先從數據庫處理部分開始吧……

==========================================連接數據庫

很多人剛升級到 Mysql 4.1 時會發現數據亂掉了……其實是因為 Mysql 從 4.1 開始支援字符集了……而且默認字符集正是 UTF8 ……(充分證明與國際接軌的重要性…… 嘿嘿……)而以前我們大多使用 utf8 或是 GBK 編碼……這樣以來輸出的數據當然是亂碼……要解決亂碼……就得讓程序知道該獲取什么編碼的數據……

我們假設你以前的數據庫是 utf8 編碼的……那么你可以在查詢前添加一句

mysql_query('SET CHARACTER SET utf8') or die('Query failed : ' . mysql_error());當然,由于 4.1 以上才需要這樣處理,因此我們可以加上判斷:

$mysqlversion = $db->query_first('SELECT VERSION() AS version');if ($mysqlversion['version'] >= '4.1'){mysql_query('SET CHARACTER SET utf8') or die('Query failed : ' . mysql_error());}這樣以來不管 Mysql 默認編碼是什么都可以正常存取了……(不論您是存活期,還是存定期,甚至是零存整取都沒有問題鳥……)

但是,人家都國際化鳥……您還在用 utf8 行么?如何轉碼呢?還有……數據升級時出現亂碼怎么辦?涼拌!且聽下回分解……

============================================數據升級至 4.1

要升級……就得先導出……要說老外還真不負責……以前的導出方式總是弄丟一些中文字符……比如把“我愛你娘”弄成“我愛你”啦……(通常是丟失一段數據最末尾的字)整個兒差了一輩兒……(用石榴姐的話說就是“這么大逆不道的事實在是太刺激了”……)為了保護您脆弱的心臟……也為了維護中國傳統倫理道義……您可以把數據包含中文字符的字段改為二進制(Binary)編碼……具體方法嘛……可以運行這個語句:

ALTER TABLE `表名` CONVERT TO CHARACTER SET binary;這樣,那些字符類型字段,如:CHAR、VARCHAR 和 TEXT將轉換為BINARY、VARBINARY 和 BLOB然后再導出并導入到 4.1 環境中……當然,最后一項繁瑣的工作是:你需要把它們的類型再改回來……

有往 4.1 升級的……當然也有往下降級的……怎么降級???涼鞋去上個廁所……而您請翻下頁……

=============================================數據從 4.1 降級

有人發現從4.1導出的 SQL 文件無法導入低版本程序……問題其實很簡單……而且 Mysql 已經為我們想好了一切……導出時請添加 –compatible 參數……我們假設您的數據庫是 utf8 編碼的……而且目標數據庫版本為 4.0 ……那么命令行下這么寫:

shell>mysqldump --user=username --password=password --compatible=mysql40 --default-character-set=utf8 database > db.sql這樣導出的 SQL 文件就能夠順利導入低版本數據庫了……

數據庫部分算是搞定了……但 PHP 編程方面要如何注意呢?還得勞您翻下頁……http://www.mypchelp.cn=============================================PHP 文件編碼

是否所有 PHP 文件都必須轉成 UTF8 編碼呢?涼鞋告訴您是 NO ……

這么說吧……如果文件中包含需要顯示出來的中文字符……就應該轉為 UTF8 編碼……舉例子吧:

// 我是涼鞋echo time();上面的代碼雖有代碼……但是由于存在于注釋中……不會輸出……所以這個頁面可以不用轉換為 UTF8 格式……

再如:

echo '我是涼鞋';這個明顯有中文字符輸出……您還是老老實實轉換為 UTF8 吧……

當然現在很多程式都采用模板(語言包)技術……程式(非語言包文件)里是看不到任何供輸出的字符的……這樣以來我們只需要將語言包文件轉成 UTF8 編碼即可……(語言包的優勢就在這里啊…… 啊哈哈哈哈哈……)'http://www.mypchelp.cn==================================================

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 Stringecho 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

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜久久av| 亚洲高清成人| 亚洲一级淫片| 999国产精品永久免费视频app| 国产精品久久久久久久久妇女| 久久成人福利| 国产精品白丝一区二区三区| 国产精品主播| 免费亚洲婷婷| 精品欠久久久中文字幕加勒比| 国产精品**亚洲精品| 久久99蜜桃| 精品国产不卡| 超碰超碰人人人人精品| 丁香六月综合| 久久久久蜜桃| 欧洲激情综合| 巨乳诱惑日韩免费av| 免费视频久久| 亚洲精品第一| 国产亚洲一区二区三区啪| 久久99久久久精品欧美| 日本久久综合| 久久一级电影| 视频一区二区欧美| 日本免费新一区视频| 精品久久在线| 国精品一区二区| 一本一道久久a久久| 欧美午夜三级| 国产一区二区三区成人欧美日韩在线观看| 成人高清一区| 99精品综合| 欧美特黄a级高清免费大片a级| 国产精品老牛| 97精品久久| 精品国内亚洲2022精品成人| 欧美精品91| 免费在线观看日韩欧美| 亚洲欧美日韩国产综合精品二区| 中文在线不卡| 国产日韩专区| 麻豆精品网站| 亚洲成人精品| 视频在线观看一区| 国产欧美日韩| 国产色播av在线| 六月天综合网| 日韩精品五月天| 精品视频一区二区三区四区五区 | 国产精品欧美在线观看| 国产日韩欧美一区二区三区 | 国产成人精品福利| 99久久www免费| 亚洲人妖在线| 精品国产欧美日韩一区二区三区| 久久精品国产68国产精品亚洲| 久久亚洲二区| 精品国产黄a∨片高清在线| 亚洲精品小说| 国产精品99久久免费| 婷婷亚洲综合| 国产精品中文字幕亚洲欧美| 久久精品91| 水蜜桃久久夜色精品一区的特点| 国产精品久久久久久模特| 99精品视频在线观看免费播放| 日本在线视频一区二区| 人在线成免费视频| 国产欧美综合一区二区三区| 在线天堂资源www在线污| 视频在线观看一区二区三区| 成人在线免费观看91| 亚洲三级视频| 97精品国产一区二区三区| 中文字幕av一区二区三区四区| 中文在线а√天堂| 亚洲免费毛片| 欧美日韩精品在线一区| 日韩毛片网站| 亚洲国产一区二区在线观看| 国产精品igao视频网网址不卡日韩 | 久久精品国产99国产| 亚洲欧美视频一区二区三区| 久久这里只有| 日本欧洲一区二区| 日韩精品专区| 亚洲成人不卡| 国产免费成人| 日韩一区二区三免费高清在线观看| 麻豆国产欧美一区二区三区| 国产一区二区视频在线看| 先锋亚洲精品| 亚洲日本三级| 美女网站一区| 精品日韩一区| 欧美片第1页综合| 鲁大师影院一区二区三区| 成人在线视频区| 国产一精品一av一免费爽爽| 国产综合婷婷| 动漫av一区| 国产调教精品| 丝瓜av网站精品一区二区| 狠狠躁少妇一区二区三区| 亚洲影视一区二区三区| 久久三级视频| 精品国产美女a久久9999| 日本成人在线一区| 精品91久久久久| 久久久久国产一区二区| 久久久久久久久成人| 69堂精品视频在线播放| 天堂成人免费av电影一区| 亚洲福利免费| 女生影院久久| 国产美女高潮在线观看| 久久不见久久见国语| 日韩午夜视频在线| 亚洲视频二区| 日韩毛片在线| 日本蜜桃在线观看视频| 精品日韩一区| 美女精品一区二区| 国产精品三级| 97成人在线| 亚久久调教视频| 亚洲色诱最新| 99视频一区| 一区三区视频| 亚洲免费激情| 快she精品国产999| 蜜臀av性久久久久蜜臀aⅴ流畅| 免费高潮视频95在线观看网站| zzzwww在线看片免费| 成人午夜在线| 夜夜精品视频| 欧美男人天堂| 欧美日韩91| 欧美国产极品| 国产精品一区高清| 欧美久久久网站| 久久精品凹凸全集| 国产欧美亚洲一区| 国产精品久久久久久久久久久久久久久 | 精品淫伦v久久水蜜桃| 欧美日韩亚洲一区在线观看| 7777精品| 国产精东传媒成人av电影| 国产精品嫩草影院在线看| 欧美日韩一区自拍| 国产欧美69| 国产精品午夜av| 美女视频一区在线观看| 精品国产乱码久久久久久樱花| 国产亚洲精品美女久久久久久久久久| 欧美视频二区| 久久影院一区二区三区| 色欧美自拍视频| 久久黄色影院| 日韩在线一区二区| 日本午夜精品久久久| 欧美精品1区| 美女av在线免费看| 日韩欧美看国产| 国产一区日韩一区| 亚洲一区二区三区无吗| 欧美亚洲二区| 在线精品亚洲欧美日韩国产| 伊人久久大香线蕉av不卡| 午夜欧美精品久久久久久久| 日韩精品一二三区| 国产欧美久久一区二区三区| 国产精品99久久精品| 91精品福利| 日韩和欧美一区二区三区| 国产精品18| 激情婷婷亚洲| 日韩精品乱码av一区二区| 麻豆精品在线播放| 99精品美女| 亚洲精品成人一区| 大香伊人久久精品一区二区| 国产精品99一区二区| 亚洲ww精品| 欧美1区2区3| 亚洲网站视频| 国产亚洲高清在线观看| 黄色aa久久| 一区二区亚洲视频| 国内一区二区三区| 亚洲欧美日本日韩| 精品日本视频| 老牛国产精品一区的观看方式| 美腿丝袜亚洲三区| 在线亚洲欧美| 久久精品国产99国产| 久久国产精品久久w女人spa| 久久久国产精品网站| 午夜欧美在线|