亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

PHP的GD函數imagettftext()要注意默認字符編碼

瀏覽:46日期:2024-01-15 09:44:12
這陣子在開發一個小功能,就是類似論壇個性簽名的東西,根據會員信息自動生成一張圖片上面還有文字的那種。圖片的拼合用imagecopy()和imagecopyresampled()等函數就可以搞定,到了畫文字的時候遇到了一個難題。文字的模板是保存在一個文本文件中,程序先讀取這個文件然后用數據替換掉里面的變量,再使用imagettftext()函數畫到圖片上,不幸的是畫出來的圖片居然是亂碼@_@……于是上Google搜索相關的問題,發現大部分人都是在說imagettftext()函數中傳遞的字串要UTF-8編碼,而PHP官方手冊中也明確寫著“UTF-8編碼的字串可以直接傳遞”,可問題是模板文件的編碼本來就是UTF-8的,這就有點莫名其妙了。無奈之下我用EmEditor打開原來的模板文件,嘗試轉換成不同的編碼后和GD輸出的亂碼做對比,結果發現轉換到EUC-JP編碼的時候居然和GD輸出的亂碼吻合了……也就是說,這里服務器上GD的默認編碼是EUC-JP,而那是一種日文編碼。查找了一下php.ini的設置沒有發現相關選項,于是又一個問題來了,這個默認編碼是在哪里設置的呢?還是史文大哥牛,發現了PHP 編譯參數里面有一個“–enable-gd-jis-conv”的參數十分可疑,Google一下果然發現了很多亂碼問題與這個編譯參數有關……官方給出的參數說明是“GD: Enable JIS-mapped Japanese font support.”,也就是讓GD支持日文編碼的字庫(可惡,為什么沒有支持中文編碼字庫的編譯選項……PHP也國籍歧視么= =b),說白了開啟了這個選項的話GD就會把TTF字庫中大于127的部分(即不屬于標準拉丁文字庫的部分)按照日文JIS的順序來映射,那么用來映射中文字體的時候自然就變成亂碼了。二話不說,去掉這個選項重新編譯,問題解決。去掉這個選項之后,imagettftext()的默認編碼就變成了UTF- 8,就可以正常顯示中文了~
標簽: PHP
主站蜘蛛池模板: 男人你懂的在线观看视频 | 黄网站免费在线观看 | 国产亚洲综合一区二区在线 | 国产一区二区在线免费观看 | 8050午夜一级全黄毛片 | 国产精品杨幂va在线观看 | 中文字幕在线观看不卡 | 一级特黄性生活大片免费观看 | 亚洲香蕉视频 | 妞干网免费在线 | 亚洲综合影院 | 综合网婷婷 | 国产日产久久高清欧美一区 | 中文国产成人精品久久一 | 精品成人资源在线观看 | 激情性生活视频在线播放免费观看 | 国产黄色一级网站 | 久久青青草原精品国产麻豆 | 色片在线免费观看 | 国产精品99久久久久久人 | 成人免费视频无遮挡在线看 | 亚洲精品久久精品h成人 | 99久久99这里只有免费的精品 | 国产成人盗拍精品免费视频 | 成人免费视频无遮挡在线看 | 男生福利网站 | 欧美日韩性视频一区二区三区 | 三级黄色在线免费观看 | 精品国产香蕉伊思人在线又爽又黄 | 亚洲国产精品一区二区久 | 99国产精品欧美久久久久久影院 | 日韩欧美国产精品 | 午夜剧场刺激性爽免费视频 | 精品一区二区三区色花堂 | 亚洲永久中文字幕在线 | 加勒比一本大道在线 | 国产成人免费在线 | 自拍啪啪| 色免费在线观看 | 中文学幕专区 | 爱爱永久免费视频网站 |