談PHP的GD函數(shù)imagettftext()要注意默認(rèn)字符編碼_PHP教程
推薦:淺析php分頁類 只用傳入總頁數(shù)PHP培訓(xùn)有一段時(shí)間了,消失也有一段時(shí)間了,特地封裝一個(gè)分頁類上傳上來,自己寫的,高手指點(diǎn),新手學(xué)習(xí),莫笑話!呵呵 配合CSS樣式會好看點(diǎn). CODE: DIV.page { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px; PADDING-TOP: 3px
這陣子在開發(fā)一個(gè)小功能,就是類似論壇個(gè)性簽名的東西,根據(jù)會員信息自動(dòng)生成一張圖片上面還有文字的那種。圖片的拼合用imagecopy()和imagecopyresampled()等函數(shù)就可以搞定,到了畫文字的時(shí)候遇到了一個(gè)難題。
文字的模板是保存在一個(gè)文本文件中,程序先讀取這個(gè)文件然后用數(shù)據(jù)替換掉里面的變量,再使用imagettftext()函數(shù)畫到圖片上,不幸的是畫出來的圖片居然是亂碼@_@@_@……于是上Google搜索相關(guān)的問題,發(fā)現(xiàn)大部分人都是在說imagettftext()函數(shù)中傳遞的字串要UTF-8編碼,而PHP官方手冊中也明確寫著“UTF-8編碼的字串可以直接傳遞”,可問題是模板文件的編碼本來就是UTF-8的,這就有點(diǎn)莫名其妙了。無奈之下我用EmEditor打開原來的模板文件,嘗試轉(zhuǎn)換成不同的編碼后和GD輸出的亂碼做對比,結(jié)果發(fā)現(xiàn)轉(zhuǎn)換到EUC-JP編碼的時(shí)候居然和GD輸出的亂碼吻合了……也就是說,這里服務(wù)器上GD的默認(rèn)編碼是EUC-JP,而那是一種日文編碼。查找了一下php.ini的設(shè)置沒有發(fā)現(xiàn)相關(guān)選項(xiàng),于是又一個(gè)問題來了,這個(gè)默認(rèn)編碼是在哪里設(shè)置的呢?還是史文大哥牛,發(fā)現(xiàn)了PHP編譯參數(shù)里面有一個(gè)“–enable-gd-jis-conv”的參數(shù)十分可疑,Goo一下果然發(fā)現(xiàn)了很多亂碼問題與這個(gè)編譯參數(shù)有關(guān)……官方給出的參數(shù)說明是“GD: Enable JIS-mapped Japanese font support.”,也就是讓GD支持日文編碼的字庫(可惡,為什么沒有支持中文編碼字庫的編譯選項(xiàng)……PHP也國籍歧視么= =b),說白了開啟了這個(gè)選項(xiàng)的話GD就會把TTF字庫中大于127的部分(即不屬于標(biāo)準(zhǔn)拉丁文字庫的部分)按照日文JIS的順序來映射,那么用來映射中文字體的時(shí)候自然就變成亂碼了。二話不說,去掉這個(gè)選項(xiàng)重新編譯,問題解決。去掉這個(gè)選項(xiàng)之后,imagettftext()的默認(rèn)編碼就變成了UTF-8,就可以正常顯示中文了~
分享:解答網(wǎng)頁中PHP腳本中include文件報(bào)錯(cuò)的方法經(jīng)常當(dāng)php頁面中利用include, require, require_once包含了一些其他位置的頁面時(shí),會出現(xiàn)錯(cuò)誤,比如沒有發(fā)現(xiàn)次頁面,或者權(quán)限不允許等,可以根據(jù)以下方法來排除 1. 出現(xiàn)
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- 深入php函數(shù)file_get_contents超時(shí)處理的方法詳解
- PHP下打開phpMyAdmin出現(xiàn)403錯(cuò)誤
- 5種方法讓您成為php開發(fā)高手
- 最好用的PHP數(shù)據(jù)庫操作類-ezSQL
- php獲取本地圖片文件并生成xml文件輸出具體思路
- php5 MySQL5 apache2 phpmyadmin ZendOptimizer安裝與配置
- php正則表達(dá)式使用的詳細(xì)介紹
- php更新mysql后獲取影響的行數(shù)發(fā)生異常解決方法
- 淺談PHP企業(yè)級應(yīng)用之常見緩存技術(shù)篇
- Zend Framework 入門——快速上手
- 相關(guān)鏈接:
- 教程說明:
PHP教程-談PHP的GD函數(shù)imagettftext()要注意默認(rèn)字符編碼。