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