php中文字元亂碼的解決方法:1、改mysql設定檔「my.ini」或「my.cnf」;2、在需要做資料庫操作的php程式前加入語句「mysql_query("set names '編碼'");」;3、將伺服器編碼集設定為「UTF-8」。
PHP中文亂碼原因及解決方法分析
PHP網頁的編碼
1.如果要使用gb2312編碼,那麼php要輸出頭:header("Content-type:text/html;charset=gb2312");,靜態頁面添加,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋原始檔。
2.如果要使用utf-8編碼,那麼php要輸出頭:header("Content-type:text/html;charset=utf-8");,靜態頁面添加,所有文件的編碼格式為utf-8。儲存為utf-8可能會有點麻煩,一般utf-8檔開頭會有BOM,如果使用session就會出問題,可用editplus來保存,在editplus中,工具->參數選擇->檔-> UTF-8簽名,選擇總是刪除,再儲存就可以去掉BOM資訊了。
3.php本身不是 Unicode 的,所有substr之類的函數得改成mb_substr(需要裝 mbstring 擴充);或是用 iconv 轉碼。
PHP與Mysql的資料互動
PHP與資料庫的編碼要一致
1.修改mysql設定檔my.ini或my.cnf,mysql 最好用utf -8 編碼
[mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 default-storage-engine=MyISAM 在[mysqld]下加入: default-collation=utf8_bin init_connect='SET NAMES utf8'
2.在需要做資料庫操作的php程式前加上mysql_query("set names '編碼'");,編碼和php編碼一致,如果php編碼是gb2312 那mysql 編碼就是gb2312 ,如果是utf-8那mysql 編碼就是utf8,這樣插入或檢索資料時就不會出現PHP中文亂碼了。
關於編碼
1、字符集:
在電腦底層中資料儲存的都是二進位數據,要取得真正有意義的字符,就必須讓二進位資料與每一個字元對應起來,這種對應關係就形成了一張編碼表。
常用字元集:
ISO-8859-1 拉丁碼表 latin,表示西歐語言,使用一個位元組即8位元表示資料。
GB2312 簡體中文碼錶。包含6000-7000中文和符號。用兩個位元組表示。兩個位元組都是開頭為1,都為負數。
GBK 目前最常用的中文碼表,2萬的中文和符號。用兩個位元組表示資料。
Unicode 國際標準碼,無論是什麼文字,都用兩個位元組儲存。
UTF-8 基於Unicode,一個字節就可以存儲數據,不用兩個字節存儲,而且這個碼表更加的標準化,在每個字節頭加入了編碼信息。
(Linux 預設使用的ISO-8859-1,win32預設使用的GB2312)
2、編碼和解碼
編碼: 將字元轉換成在字元集中對應的編碼
解碼: 在字元集中找出編碼對應的字元
中文在網路中的傳輸過程
1、以Java為例,eclipse預設使用UTF- 8 編碼集,Tomcat 伺服器預設使用ISO-8859-1編碼集,瀏覽器一般預設使用GBK 編碼集。
程式與伺服器之間以字元傳輸,伺服器與瀏覽器之間以位元組傳輸。
2、中文傳輸過程:
瀏覽器中的中文字元----->進行編碼----->伺服器----->進行解碼----->程式;
程式中的中文字元----->伺服器----->進行解碼----->瀏覽器---- ->編碼進行顯示
3、亂碼產生原因以解決方式:
(1)、瀏覽器中的中文字元以GBK 編碼,以位元組串流傳輸到伺服器,伺服器再以ISO-8859-1進行解碼,以字元的形式傳送給程式。
因為ISO-8859-1 編碼集不支援中文字符,所有解碼後的字符都是西歐字符,把這些字符傳送給程式就產生了亂碼;
針對這個原因,只要把伺服器的編碼集設定為UTF-8 即可:
request.setCharacterEncoding("UTF-8");
但這種方法只能用於POST請求方式,因為設定只會作用於請求體中的內容,如果是GET請求方式,可用先解碼再編碼的方式:
byte[] buffer = request.getParameter("word").getBytes("ISO-8859-1"); //进行编码 String newStr = new String(buffer,"UTF-8"); //进行解码
(2)、程式中的中文字元原樣傳送到伺服器,伺服器要先對中文字元進行編碼再傳送給瀏覽器,但因為ISO-8859- 1 編碼集不支援中文字符,所以在字符集中查找不到對應的編碼,編碼後就變成了問號,傳輸給了瀏覽器並顯示;
#針對這種情況,要進行兩次設定:
response.setCharacterEncoding("UTF-8");//将服务器编码集设置为UTF-8 response.setContentType("text/html;charset=UTF-8"); //将浏览器编码集设置为UTF-8
實際上第二行設定已經包含了對伺服器的設置,所以通常只要寫第二句程式碼即可。
更多相關知識,請造訪PHP中文網!
以上是如何解決php中文字元亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境