PHP亂碼問題,UTF-8(亂碼) (share)

 

一.PHP頁面轉UTF-8編碼問題 

1.在代碼開始出加入一行: 
header("Content-Type: text/html;charset=utf-8");php

2.PHP文件編碼問題html

點擊編輯器的菜單:「文件」->「另存爲」,能夠看到當前文件的編碼,確保文件編碼爲:UTF-8, 
若是是ANSI,須要將編碼改爲:UTF-8。 mysql

3.JS讀Cookie的中文亂碼問題 sql

PHP寫cookie的時候須要將中文字符進行escape編碼, 不然JS讀到cookie中的中文字符將是亂碼。 但php自己沒有escape函數,咱們新寫一個escape函數: 數據庫

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("UTF-8","UCS-2",$v)); 
    } 
    return join("",$ar); 
}

JS讀cookie的時候,用unescape解碼,而後就解決cookie中有中文亂碼的問題了。cookie

 

二.MYSQL數據庫使用UTF-8編碼的問題

1.用phpmyadmin建立數據庫和數據表 編輯器

建立數據庫的時候,請將「整理」設置爲:「utf8_general_ci」 ,或執行語句:函數

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

建立數據表的時候:若是是該字段是存放中文的話,則須要將「整理」設置爲:「utf8_general_ci」,若是該字段是存放英文或數字的話,默認就能夠了。編碼

相應的SQL語句,例如:url

CREATE TABLE `test` ( 
`id` INT NOT NULL , 
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 
PRIMARY KEY ( `id` ) 
) ENGINE = MYISAM ;

 

2.用PHP讀寫數據庫

在鏈接數據庫以後,加入兩行:

mysql_query("set character set 'utf8'");//讀庫

mysql_query("set names 'utf8'");//寫庫

 

就能夠正常的讀寫MYSQL數據庫了。

 

節選自:http://www.cnblogs.com/rickyNote/archive/2012/04/09/2438704.html

相關文章
相關標籤/搜索