程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 字符串編碼轉換的常用幾種方法

php 字符串編碼轉換的常用幾種方法

編輯:關於PHP編程

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 code<?php
function 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 code<?php
function 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;
}
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved