php 字串編碼轉換的常用幾種方法_PHP教程

來源:互聯網
上載者:User
php教程 字串編碼轉換的常用幾種方法

mb_convert_encoding()
PHP的內碼轉換函式
版本(PHP 4 >= 4.0.6, PHP 5)
這個函數可以將各種編碼互相轉換

做一個GBK To UTF-8
< ?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("你是我的友仔", "UTF-8", "GBK");
?>

再來個GB2312 To Big5
< ?php
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312");
?>


iconv()
php內碼轉換函式,同上
因為iconv()在轉換gb2312時的bug,所以要這樣處理

PHP codeiconv( "UTF-8", "gb2312//IGNORE" , $str)

ignore的意思是忽略轉換時的錯誤,發現iconv在轉換字元"—"到gb2312時會出錯,如果沒有

ignore參數,所有該字元後面的字串都無法被儲存。
另外mb_convert_encoding沒有這個bug,所以最好的寫法是:
PHP codemb_convert_encoding($str,"gb2312", "UTF-8");

但是需要先enable mbstring 擴充庫。
也可以把mysql教程資料庫教程的collation設成utf-8就不用作轉換了
三句mysql真言
SQL code
SET NAMES utf8;
SET CHARACTER SET utf8;
SET COLLATION_CONNECTION='utf8_general_ci';


自定函數1
--------------------------------------------------------------------------------

---
網上找的轉換函式,將GB2312進行轉換的,修改為utf-8後轉換錯誤,無法解析中文.....期待正

則狂人...
PHP codefunction escape($str) {
preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}

function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
?>


自定函數2
--------------------------------------------------------------------------------

---
感謝論壇gingzai777 ,高手就是不一樣,一眼就能看出問題所在.....
以後php過濾用這個行了,不需要顧慮檔案編碼了.....
PHP codefunction addslashes_str($str){
$str=addslashes($str);
$str=str_replace($str,";",';');
return $str;
}
function strips教程lashes_str($str){
$str=stripslashes($str);
$str=str_replace($str,';',";");
return $str;
}
?>

http://www.bkjia.com/PHPjc/632291.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632291.htmlTechArticlephp教程 字串編碼轉換的常用幾種方法 mb_convert_encoding() PHP的內碼轉換函式 版本(PHP 4 = 4.0.6, PHP 5) 這個函數可以將各種編碼互相轉換 做一個...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.