從四方面解決PHP網站中文亂碼問題
建設網站入門,從“註冊登入”開始估計就會遇到中文亂碼的問題,主要解決方法是保證PHP、HTML、JS、資料庫的編碼模式保持一致,下面說說怎麼修改它們的編碼模式,其中最容易被忽略的是JS的編碼。
直接說結論。請使用“utf-8”編碼,不要使用“gb2312”編碼,“big5”編碼不適合簡體人群。
HTML編碼:charset=”UTF-8
在<head></head>
之間加上<meta charset="UTF-8">
,可能用不同版本的html會有所不同,總之在meta這一項上,charset=”UTF-8”。
這樣可以修正頁面直接顯示時,出現中文亂碼的問題。
這句話一定要寫在中文出現之前
<head>
<meta charset="UTF-8">
<title>登入</title>
</head>
PHP編碼:header(‘Content-Type:text/html;charset=utf-8’);
在<?php ?>
語句的開頭寫上header語句 :header('Content-Type:text/html;charset=utf-8');
比如:
<?php
session_start();
header('Content-Type:text/html;charset=utf-8' );/*設定php編碼為utf-8*/
if(!empty($_COOKIE['name']) and !is_null($_COOKIE['name'])){
$_SESSION['name'] = $_COOKIE['name'];
header('location:http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/php/index_teach.php');
}else{
header('location:http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER ['SCRIPT_NAME']).'/php/login.php');
}
?>
JS編碼:修改JS檔案編碼(重要)
Javascript檔案的編碼問題是最容易被忽視的問題,不修改會導致利用Javascript彈出的視窗顯示中文亂碼,使用Ajax在頁面非同步傳輸顯示中文亂碼。
網上的做法通常是
<script charset="UTF-8" type="text/javascript" src="../js/login.js"></script>
在html、php引用檔案時加入charset="UTF-8"
,但是治標不治本,檔案還是其他編碼格式,所以通常還是會顯示中文亂碼,最重要的還是修改JS檔案本身的編碼模式,下面提供兩種有效的方式:1.使用Dreamwaver軟體修改;2.使用txt修改;
1. Dreamwaver軟體修改
用Adobe Dreamwaver開啟該JS檔案,點選選單欄中的“修改”->”頁面屬性”
在彈出的視窗中選擇“文件編碼”為“Unicode(UTF-8)”
點選“應用”“確定”即可
2.使用txt修改
右擊檔案,“開啟方式”選擇“記事本”
開啟後,”檔案”->“另存為”
選擇編碼為“UTF-8”,正確設定檔名和儲存型別,點選“確定”即可
資料庫編碼:utf8_general_ci
建資料庫時,請注意資料庫的排序規則必須是“utf-8”開頭的,建議使用utf8_general_ci。
不知道大家用什麼資料庫管理軟體,下面Dandelion以phpMyAdmin作一個使用例子:
D聊一聊
只要保證了PHP、HTML、JS、資料庫這4個方面的編碼模式保持一致,基本上可以解決PHP建設網站時顯示中文亂碼的問題。
Dandelion自己使用了以上方法後,解決了該問題,比較難搜到的應該是JS編碼模式的修改,這次嘗試也為自己提供了一些新的搜尋思路。
部分內容為了簡潔,我直接給了一個結論,其實有其他的選擇,至於我為什麼選擇這個,說來冗長,相信大家只要稍微找找也就有底了。
以上為Dandelion_Miss的經驗之談,如有不妥,還望指教。