成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

UTF8下的中文PHP編程

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

前言:

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

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

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

==========================================連接數(shù)據(jù)庫

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

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

mysql_query('SET CHARACTER SET utf8') or die('Query failed : ' . mysql_error());當(dāng)然,由于 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 行么?如何轉(zhuǎn)碼呢?還有……數(shù)據(jù)升級時出現(xiàn)亂碼怎么辦?涼拌!且聽下回分解……

============================================數(shù)據(jù)升級至 4.1

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

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

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

=============================================數(shù)據(jù)從 4.1 降級

有人發(fā)現(xiàn)從4.1導(dǎo)出的 SQL 文件無法導(dǎo)入低版本程序……問題其實很簡單……而且 Mysql 已經(jīng)為我們想好了一切……導(dǎo)出時請?zhí)砑?–compatible 參數(shù)……我們假設(shè)您的數(shù)據(jù)庫是 utf8 編碼的……而且目標(biāo)數(shù)據(jù)庫版本為 4.0 ……那么命令行下這么寫:

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

數(shù)據(jù)庫部分算是搞定了……但 PHP 編程方面要如何注意呢?還得勞您翻下頁……h(huán)ttp://www.mypchelp.cn=============================================PHP 文件編碼

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

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

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

再如:

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

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

UTF8 中文截取

由于 UTF8 使用三個字節(jié)……所以傳統(tǒng)的 substr 函數(shù)就沒轍了……很多高手都寫了 UTF8 中文字符截取函數(shù)……這里送上幾種:

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.先截后取這種方式?jīng)鲂X得很巧妙……用傳統(tǒng)截取函數(shù)先截斷……然后判斷中文單個字符是否被分割開……如果是……則處理之……要特別注意的是 substr 函數(shù)的第三個參數(shù)必須大于 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 中文版里所寫的函數(shù)……短小精悍……源碼不便放出……對不住鳥……

今天就寫到這里吧……還有轉(zhuǎn)碼等問題沒有寫……最近忙……有空繼續(xù)整理……h(huán)ttp://www.quchao.com/?p=6&pp=1

標(biāo)簽: PHP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国内一区二区在线视频观看| 日韩午夜黄色| 日韩午夜av在线| 国产一区二区三区黄视频| 亚洲精品一区二区三区福利| 国产精品久久久对白| 国产成人精品一区二| 国产日韩高清在线| 久久婷婷麻豆| 欧美日韩亚洲一区在线观看| 免费成人在线观看| 国产欧美一区二区三区在线看蜜臀 | 136国产福利精品导航| 国产精品久久久一区二区| 国产成人免费视频精品含羞草妖精 | 国产精品久久久久久妇女6080| 色www精品视频在线观看| 色综合久久中文综合久久牛| 日本亚洲电影天堂| 亚洲激情图片一区| 国产精品久99| 国产最新精品精品你懂的| 欧美日韩精品欧美日韩精品一综合| 蜜臀av一区二区三区| 欧美专区亚洲专区| 国产一区二区影院| 欧美三级乱人伦电影| 99视频在线精品国自产拍免费观看| 91成人看片片| 亚洲欧美日韩国产综合在线| 91久久中文| 亚洲一区二区综合| 久久都是精品| 奇米影视一区二区三区小说| 色噜噜狠狠色综合欧洲selulu| 天使萌一区二区三区免费观看| 91国产视频在线观看| 韩国精品久久久| 日韩午夜三级在线| av中文字幕在线不卡| 精品不卡在线视频| 91片在线免费观看| 亚洲欧美自拍偷拍色图| 国产欧美日本| 香蕉久久夜色精品国产使用方法| 日本韩国一区二区三区视频| 久久电影网站中文字幕 | 欧美一区二区福利视频| 国产精品99久久久久久似苏梦涵 | 成人黄页在线观看| 久久精品人人做人人爽97| 欧美少妇一区| 一卡二卡三卡日韩欧美| 色诱视频网站一区| 韩国成人精品a∨在线观看| 日韩一区二区三区四区| av成人动漫在线观看| 亚洲国产精品精华液2区45| 激情亚洲网站| 亚洲女同ⅹxx女同tv| 蜜乳av另类精品一区二区| 免费成人在线网站| 日韩一级片在线播放| 99re热这里只有精品视频| 国产精品欧美一级免费| 一道本一区二区| 日韩精品五月天| 666欧美在线视频| 91麻豆自制传媒国产之光| 亚洲男人天堂av网| 色8久久人人97超碰香蕉987| 国产高清精品在线| 国产精品水嫩水嫩| 美日韩在线观看| 国产999精品久久久久久绿帽| 亚洲国产精品精华液2区45| 亚洲欧美日韩国产一区| 国产精品一品二品| 亚洲欧美自拍偷拍| 色88888久久久久久影院野外| 国产成人免费xxxxxxxx| 亚洲欧洲精品一区二区三区| 老牛影视一区二区三区| www.爱久久.com| 一区二区三区不卡在线观看 | 欧美另类视频在线| 亚洲1区2区3区视频| 日韩欧美在线网站| 国产欧美韩日| 成人少妇影院yyyy| 亚洲国产日韩a在线播放| 欧美大尺度电影在线| 99亚洲一区二区| 国产999精品久久久久久| 亚洲欧洲色图综合| 欧美日韩高清一区二区三区| 欧美精品不卡| 蜜桃av噜噜一区二区三区小说| 精品国产91乱码一区二区三区 | 欧美一区二区三区四区视频| 欧美日本三区| 青草国产精品久久久久久| 久久精品视频在线看| 色综合久久久久综合体| 91麻豆国产自产在线观看| 亚洲国产一二三| 日韩欧美三级在线| 亚洲三级影院| 国产精品伦一区| 欧美性受极品xxxx喷水| 欧美精品首页| 午夜视频在线观看一区二区三区 | 欧美一级爆毛片| 国产精品日韩欧美一区二区三区 | 色噜噜狠狠成人中文综合| 女女同性女同一区二区三区91| 热久久免费视频| 中文字幕日本不卡| 欧美大片一区二区| 欧美伊人久久久久久久久影院 | 久久九九久久九九| 欧美亚洲一区二区在线| 激情亚洲成人| 成av人片一区二区| 极品美女销魂一区二区三区免费| 亚洲免费观看视频| 久久先锋资源网| 欧美日韩三级一区二区| 国产日韩一区二区三区| 欧美一区免费| 国产精品77777竹菊影视小说| 亚洲国产精品久久艾草纯爱| 日本一区二区三区国色天香| 欧美区视频在线观看| 午夜在线视频一区二区区别| 欧美日韩三级电影在线| 精品一区二区免费| 亚洲超丰满肉感bbw| 成人欧美一区二区三区小说| 亚洲精品在线观| 欧美日韩一区二区在线观看 | 欧美影院精品一区| 秋霞影院一区二区| 另类图片国产| 中文字幕欧美日韩一区| 性高湖久久久久久久久| 欧美一区高清| 国产成人精品影院| 久久精品国产网站| 亚洲欧美日韩在线不卡| 极品日韩av| 亚洲三级电影全部在线观看高清| 欧美激情日韩| 中文欧美字幕免费| 伊甸园精品99久久久久久| 国产精品久久久久久久午夜片| 93久久精品日日躁夜夜躁欧美| 精品国产人成亚洲区| 97久久超碰国产精品| 国产欧美一区二区精品忘忧草| 国产精品v欧美精品∨日韩| 欧美国产日韩精品免费观看| 97久久人人超碰| 中文成人综合网| 亚洲精品专区| 亚洲 欧美综合在线网络| 91黄色小视频| 国内精品免费在线观看| 日韩欧美一区在线| 成人av网站在线| 1区2区3区国产精品| 中文无字幕一区二区三区| 日韩欧美国产精品| 欧美一二三区在线观看| 欧美高清www午色夜在线视频| 中文字幕第一页久久| 开心九九激情九九欧美日韩精美视频电影| 美女精品网站| 激情五月播播久久久精品| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美一卡二卡三卡四卡| 欧美日韩影院| 日本不卡123| 久久久激情视频| 国产免费成人| 岛国一区二区三区| 亚洲丝袜自拍清纯另类| 在线观看日韩一区| 国产成人综合亚洲网站| 中文字幕在线不卡一区| 在线观看视频一区二区欧美日韩| av网站免费线看精品| 亚洲国产成人porn| 久久夜色精品一区| 久久亚洲精选| 99这里只有精品| 久久激情五月婷婷| 亚洲色大成网站www久久九九| 日韩欧美国产电影| 日本高清不卡在线观看|