首頁 > 後端開發 > PHP問題 > dw php網頁中文亂碼怎麼辦

dw php網頁中文亂碼怎麼辦

藏色散人
發布: 2023-03-17 15:20:02
原創
6788 人瀏覽過

dw php網頁中文亂碼的解決方法:1、將標題編碼設定為UTF8;2、使用Dreamweaver新建php檔案時,透過「」申明格式utf -8;3、透過「mysql_query("SET NAMES GBK");」來設定MYSQL連線編碼。 ="utf-8">

dw php網頁中文亂碼怎麼辦

本教學操作環境:Windows7系統、dreamweaver8版、Dell G3電腦。

dw php網頁中文亂碼怎麼辦?

Dreamweaver運行php檔案預覽介面中文亂碼解決方法

做網站開發需要處理多國不同的語言,常遇到的是中英混排。使用Dreamweaver新建、執行PHP程式碼時預覽視窗中文有時會顯示亂碼,英文可正常顯示。

dw php網頁中文亂碼怎麼辦
dw php網頁中文亂碼怎麼辦

#出現這種情況的原因主要有:
1、文件編碼:指的是頁面文件(.html,.php等)本身是以何種編碼來保存的。記事本和Dreamweaver 在開啟頁面時會自動識別文件編碼因而不太會出問題。而ZendStudio卻不會自動辨識編碼,它只會以某種編碼打開文件,如果工作時候一不注意,用錯誤編碼打開文件,做了修改之後一保存,亂碼就出現了。

解決的方法:頁面設置,標題/編碼,設定為UTF8

dw php網頁中文亂碼怎麼辦


#2、頁面申明編碼:
HTML頁面編碼設定
在HTML程式碼HEAD裡面,可以用來告訴瀏覽器網頁採用了什麼編碼,目前中文網站開發中XXX主要用的是GB2312和UTF -8 兩種編碼。使用Dreamweaver新建php檔案時,需要申明格式utf-8:


dw php網頁中文亂碼怎麼辦

################### ###################3、資料庫連接編碼:指的是進行資料庫操作時候以哪種編碼與資料庫傳輸數據,這裡需要注意的是不要與資料庫本身的編碼混淆,例如MySQL內部預設是latin1編碼,也就是說Mysql是以latin1編碼來儲存數據,以其他編碼傳輸給Mysql的數據會被轉換成latin1編碼。 ######知道了WEB開發中哪些地方涉及到了編碼,也就知道了亂碼產生的原因:上述3項編碼設定不一致,由於各種編碼絕大部分是相容ASCII的,所以英文符號不會出現亂碼,而中文就出現亂碼了。 ######常見錯誤狀況與解決方法:###

1、資料庫採用UTF8 編碼,而頁面申明編碼是GB2312 ,這是最常見的產生亂碼的原因。

這時候在PHP腳本裡面直接SELECT資料出來的就是亂碼,需要在查詢前先使用: mysql_query("SET NAMES GBK"); 來設定MYSQL連線編碼,確保頁面申明編碼與這裡設定的連接編碼一致(GBK是GB2312的擴充)。如果頁面是UTF-8 編碼的話,可以用: mysql_query("SET NAMES UTF8");
PHP編碼設定
在php程式碼時最前面即第一句寫:

<?php
header("Content-type:text/html;charset=utf-8");
?>
登入後複製

修改php.ini檔案

修改「/etc/php5/apache2/php.ini」將

default_charset = "iso-8859-1"
登入後複製

修改為default_charset = "utf-8"

Mysql編碼設定

<?php
mysql_query(&#39;SET NAMES UTF8&#39;);
?>
登入後複製

注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與資料庫內部編碼一致可以不設定連接編碼。

MYSQL的資料輸入輸出比上面講的更複雜一些,MYSQL設定檔my.ini中定義了2個預設編碼,分別是[client]裡的default -character-set和[mysqld] 裡的default-character-set 來分別設定預設時候客戶端連線和資料庫內部所採用的編碼。我們上面指定的編碼其實是MYSQL客戶端連線伺服器時候的命令列參數character_set_client,來告訴MYSQL伺服器接受到的客戶端資料是什麼編碼的,而不是採用預設編碼。

在前面的基礎上,還要在你的資料查詢/修改/增加之前加入資料庫編碼。

2、頁面申明編碼與文件本身編碼不一致,這種情況很少發生,因為如果編碼不一緻美工做頁面時候在瀏覽器看到的就是亂碼了。更多時候是發布以後修改一些小BUG,以錯誤編碼開啟頁面然後儲存導致的。或是用某些FTP軟體直接在線上修改文件,例如CuteFTP,因為軟體編碼配置錯誤而導致轉換錯了編碼。

3、租用虛擬主機的時候,上述3項編碼都設定正確了有時還是有亂碼。比方說網頁是GB2312 編碼的,IE等瀏覽器打開卻總是識別成UTF-8 ,網頁HEAD裡面已經申明是GB2312 了,手動修改瀏覽器編碼為GB2312 後頁顯示正常。產生原因是伺服器Apache設定了伺服器全域的預設編碼,在httpd.conf裡面加了AddDefaultCharset UTF-8 。這時候伺服器會先發送HTTP頭給瀏覽器,其優先權比頁面裡申明編碼高,自然瀏覽器就辨識錯了。解決方法有2個,請管理員在設定檔自己的虛機裡加上一條AddDefaultCharset GB2312 來覆蓋全域配置,或是在自己目錄的.htaccess裡配置。

總結: 要解決PHP中文亂碼,最快的解決辦法就是,頁面申明的編碼與資料庫內部編碼一致,如果頁面申請的頁碼與資料庫內部編碼不一致時,就設定連接編碼,mysql_query ("SET NAMES XXX "); XXX為連線編碼。如mysql_query('SET NAMES UTF8');   [2]

最後,中文成功顯示:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>中文</title>
</head>

<body>

<h1>中文</h1>

<?php
echo "Hello World!";
?>
登入後複製

dw php網頁中文亂碼怎麼辦

推薦學習:《PHP影片教學

以上是dw php網頁中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板