php_字元編碼

技術小牛人發表於2017-11-21

1.檢視頁面輸入,內部,輸出編碼:

print_r(iconv_get_encoding(“all”));

2.對指字串進行編碼轉換:

echo iconv(`utf-8`,`gb2312`,`我們`);        //把‘我們’由utf8編碼轉換為gb2312編碼

**iconv(in_charset,outcharset//TRANSLIT//IGNORE,$string);//`TRANSLIT`:如果在輸出的編碼格式中不含有的字元,可以在類似編碼中查詢取代;`IGNORE`:如果輸出格式編碼中不含有字串中的某字元時,能夠跳過進行後面字元的編碼。否則在轉碼失敗處會中斷輸出,產生錯誤。

3.將字串進行編碼轉換(可自動判斷編碼型別,但聽說效率沒有iconv好

mb_convert_encoding(‘我們’, `utf-8`,`gb2312` );  //將‘我們’由gb2312轉換為utf8

mb_convert_encoding(‘我們’, `utf-8`);       //將‘我們’轉換成utf8編碼格式

/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
$str = mb_convert_encoding($str“EUC-JP”“auto”);

/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str mb_convert_encoding($str“UCS-2LE”“JIS, eucjp-win, sjis-win”);

**第三個引數還可以是array()形式

4.設定編碼格式:

iconv_set_encoding(“internal_encoding”“UTF-8”);   //設定內部編碼為utf8
iconv_set_encoding(“output_encoding”“ISO-8859-1”); //設定輸出編碼為ISO-8859-1

設定選項:1.input_encoding 2.output_encoding 3.internal_encoding

**ISO-8859-1編碼是單位元組編碼,向下相容ASCII, Latin1是ISO-8859-1的別名

5.檢視字串編碼方式:

格式:string mb_detect_encoding(string$str[,mixed$encoding_list= mb_detect_order()[,bool$strict= false]] )

$str=`編碼方式`;

echo mb_detect_encoding($str);  //:UTF-8

/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
echo mb_detect_encoding($str“auto”);

/* Specify encoding_list character encoding by comma separated list */
echo mb_detect_encoding($str“JIS, eucjp-win, sjis-win”);

/* Use array to specify encoding_list  */
$ary[] = “ASCII”;
$ary[] = “JIS”;
$ary[] = “EUC-JP”;
echo mb_detect_encoding($str$ary);

6.檢視檔案編碼方式:

$file = `text3.txt`;
echo getFileEncoding(file_get_contents($file));  // 輸出UTF-16LE

7.判斷字串是否符合指定格式編碼:

格式:bool mb_check_encoding([string$var=NULL[,string$encoding= mb_internal_encoding()]] )

$string=“x00x81”;
$encoding=“Shift_JIS”;

mb_check_encoding($string,$encoding)   //:true

8.單個或多個變數的字元編碼轉換

格式:stringmb_convert_variables(string$to_encoding,mixed$from_encoding,mixed&$vars[,mixed&$…] )

**$from_encoding:可以是數字形式,用逗號分隔字串或結構體形式。

$str1= `測試編碼`;$str21= `測試編碼2`;

$inputenc = mb_convert_variables(“UTF-8”, “UTF-8,GBK,GB2312”, $str1, $str2);

var_dump($inputenc);    //: string(5) “UTF-8”
var_dump($str1);      //: string(12) “測試編碼”

 

**CP936是GBK

文章來源:http://www.cnblogs.com/gaoshicai/archive/2012/06/14/2548976.html

本文轉自  ttlxihuan    51CTO部落格,原文連結:http://blog.51cto.com/php2012web/1433606


相關文章