unicode轉換utf8php
1. php裡面怎樣把utf-8編碼的字元串 (如 \u5e7f), 重新解碼成中文,多謝
這種字元串是unicode編碼的,而不是utf-8。json_decode()可以自動將json中的unicode字元串轉換為utf-8。你可以自己構造一個json來實現。
<?php
$str='u5e7fu4e1cu6df1u5733';
$json='{"foo":"'.$str.'"}';
$d=json_decode($json,true);
$str=$d['foo'];//這個就是你想要的
望採納!
2. unicode編碼轉換用PHP實現將GB編碼轉換為UTF8
gb2utf8.php 文件定義了一個名為 GB2UTF8 的類,用於實現 GB 編碼轉換為 UTF8 編碼。類內部包含了一個設置GB2312代碼文件的函數 SetGb2312,用於載入GB2312編碼表。該類還包含了一個轉換函數 Convert,用於將輸入的GB2312字元串轉換為UTF8字元串。如果轉換過程中出現錯誤,會記錄錯誤信息在 $ErrorMsg 屬性中。轉換時,通過循環處理輸入字元串中的每個字元,根據字元的編碼范圍,選擇不同的轉換邏輯,最終生成UTF8格式的字元串並保存在 $utf8 屬性中。
在測試文件中,通過 Header 函數設置輸出類型為 PNG 圖像。使用 Imagecreate 創建一個 400x300 的圖像對象。使用 ImageColorAllocate 分別定義黑色和白色字體顏色。接著,調用 gb2utf8.php 文件中的 gb2utf8 類實例,並傳入待轉換的 GB2312 字元串 "123abc中國456def測試正確"。調用 Convert 函數執行轉換操作。使用 ImageTTFText 函數在圖像上繪制轉換後的 UTF8 字元串,字體為 SIMKAI.TTF,字體大小為 20。最後,使用 ImagePNG 將圖像輸出為 PNG 格式,並使用 ImageDestroy 刪除圖像對象。
這個代碼示例展示了如何使用 gb2utf8.php 類將 GB 編碼的中文文本轉換為 UTF8 編碼,並在圖像上顯示轉換後的結果。確保在使用字體前先進行字體文件的正確設置,確保可以正確顯示英文字元。通過這個測試文件,可以驗證 gb2utf8 類的功能是否正常工作,並檢查轉換後的字元串是否正確顯示在圖像上。
3. 如何配置PHP UTF8 編碼 配置文件
要輸出UTF8格式時,加上以下語句:
header(」Content-Type: text/html; charset=UTF-8″)
php用UTF-8總結:
php文件本身必須是UTF-8編碼。不像Java會生成class文件,避免這個問題
php要輸出頭:header(」Content-Type: text/html; charset=UTF-8″)
meta標簽無所謂,有header所有瀏覽器就會按header來解析
所有外圍都得用UTF8,包括資料庫、×.js、×.css(CSS影響倒不大)
php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼(基本上的linux都裝了,沒裝的話download、tar、make、make install,很簡單的)
my.ini:
[MySQL(和PHP搭配之最佳組合)]
default-character-set=utf8
[MySQL(和PHP搭配之最佳組合)d]
default-character-set=utf8
default-storage-engine=MyISAM
在[MySQL(和PHP搭配之最佳組合)d]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
在需要做資料庫操作的php程序前面加上
mb_internal_encoding('utf-8');
create table最後邊加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
phpMyAdmin/config.inc.php
$cfg['DefaultCharset'] = 'utf-8';
$cfg['RecodingEngine'] = 'iconv';
phpAdmin導出數據時
把"二進制區域使用十六進制顯示"的勾去掉
特別郁悶的:文件系統函數不支持UTF-8!
4. 求PHP的常用編碼方式以及它們各自的優缺點
常見的有:
utf-8編碼 :
gbk編碼
big5編碼
UTF-8:Unicode TransformationFormat-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字元的一種多位元組編碼,它對英文使用8位(即一個位元組),中文使用24為(三個位元組)來編碼。UTF-8包含全世界所有國家需要用到的字元,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字元集的瀏覽器上顯示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。
GBK是國家標准GB2312基礎上擴容後兼容GB2312的標准。GBK的文字編碼是用雙位元組來表示的,即不論中、英文字元均使用雙位元組來表示,為了區分中文,將其最高位都設定成1。GBK包含全部中文字元,是國家編碼,通用性比UTF8差,不過UTF8佔用的資料庫比GBD大。
GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉換:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
對於一個網站、論壇來說,如果英文字元較多,則建議使用UTF-8節省空間。不過現在很多論壇的插件一般只支持GBK。
BIG5是用於繁體中文的。
5. utf8_to_unicodeinPHP
從UTF8轉換成unicode beta1.0
參數:mixed $string要轉換的字元串
返回:unicode的十六進制編碼
function utf8_to_unicode_hex( $string )
{
$length = strlen ( $string );
$outstring = "" ;
for ( $i = 0 ; $i< $length ; $i ++ )
{
$asc_value = ord ( $string [ $i ]);
if ( $asc_value >127 )
{
if ( $asc_value >= 192 && $asc_value<= 223 )
{
$str_dec = ( ord ( $string [ $i ]) & 0x3f )<< 6 ;
$i ++ ;
$str_dec += ord ( $string [ $i ]) & 0x3f ;
$str_hex = dechex ( $str_dec );
$outstring .= str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
}
elseif ( $asc_value >= 224 && $asc_value<= 239 )
{
$str_dec = ( ord ( $string [ $i ]) & 0x1f )<< 12 ;
$i ++ ;
$str_dec += ( ord ( $string [ $i ]) & 0x3f )<< 6 ;
$i ++ ;
$str_dec += ord ( $string [ $i ]) & 0x3f ;
$outstring .= dechex ( $str_dec );
}
elseif ( $asc_value >= 240 && $asc_value<= 247 )
{
$str_dec = ( ord ( $string [ $i ]) & 0x0f )<< 18 ;
$i ++ ;
$str_dec += ( ord ( $string [ $i ]) & 0x3f )<< 12 ;
$i ++ ;
$str_dec += ( ord ( $string [ $i ]) & 0x3f )<< 6 ;
$i ++ ;
$str_dec += ord ( $string [ $i ]) & 0x3f ;
$outstring .= dechex ( $str_dec );
}
else
{
$str_hex = dechex ( ord ( $string [ $i ]));
$outstring .= str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
}
}
return $outstring ;
}