PHP文字化けし問題、UTF-8(文字化けし)(share)

3633 ワード


一.PHPページ回転UTF-8符号化問題
1.コードに1行の追加を開始する:header(「Content-Type:text/html;charset=utf-8」);
2.PHPファイル符号化の問題
エディタのメニュー「ファイル」->「名前を付けて保存」をクリックすると、現在のファイルのエンコードが表示され、ファイルのエンコードが:UTF-8であることを確認します.ANSIの場合、エンコードを:UTF-8に変更する必要があります. 
3.JSはCookieの中国語の文字化けし問題を読みます
PHPがクッキーを書くときは中国語文字をescape符号化する必要があります.そうしないと、JSがクッキーに読んだ中国語文字は文字化けしてしまいます.しかし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でクッキーを読むとき、unescapeで復号し、クッキーに中国語の文字化けしの問題を解決します.
 
二.MYSQLデータベースがUTF-8符号化を使用する問題
1.phpmyadminでデータベースとデータテーブルを作成する
データベースを作成するときは、「整理」を「utf 8_general_ci」に設定するか、文を実行します.
CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

データテーブルを作成する場合:このフィールドが中国語を格納している場合は、「整理」を「utf 8_general_ci」に設定し、このフィールドが英語または数字を格納している場合はデフォルトでよい.
対応するSQL文(例:
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でデータベースを読み書きする
データベースに接続した後、次の2行を追加します.
mysql_query("set character set 'utf8'");//  

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

 
MYSQLデータベースを正常に読み書きできます.
 
セクション:http://www.cnblogs.com/rickyNote/archive/2012/04/09/2438704.html