1. 程式人生 > >從四方面解決PHP網站中文亂碼問題

從四方面解決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軟體修改

  1. 用Adobe Dreamwaver開啟該JS檔案,點選選單欄中的“修改”->”頁面屬性”
    “修改”->"頁面屬性"

  2. 在彈出的視窗中選擇“文件編碼”為“Unicode(UTF-8)”
    Unicode(UTF-8)

  3. 點選“應用”“確定”即可

2.使用txt修改

  1. 右擊檔案,“開啟方式”選擇“記事本”
    開啟方式”選擇“記事本”

  2. 開啟後,”檔案”->“另存為”
    "檔案"->“另存為”

  3. 選擇編碼為“UTF-8”,正確設定檔名和儲存型別,點選“確定”即可
    這裡寫圖片描述

資料庫編碼:utf8_general_ci

建資料庫時,請注意資料庫的排序規則必須是“utf-8”開頭的,建議使用utf8_general_ci
不知道大家用什麼資料庫管理軟體,下面Dandelion以phpMyAdmin作一個使用例子:
utf8_general_ci

D聊一聊

只要保證了PHP、HTML、JS、資料庫這4個方面的編碼模式保持一致,基本上可以解決PHP建設網站時顯示中文亂碼的問題。

Dandelion自己使用了以上方法後,解決了該問題,比較難搜到的應該是JS編碼模式的修改,這次嘗試也為自己提供了一些新的搜尋思路。

部分內容為了簡潔,我直接給了一個結論,其實有其他的選擇,至於我為什麼選擇這個,說來冗長,相信大家只要稍微找找也就有底了。

以上為Dandelion_Miss的經驗之談,如有不妥,還望指教。