簡體   English   中英

LAMP堆棧中UTF-8和ISO-8859-1之間的編碼問題

[英]Encoding problems between UTF-8 and ISO-8859-1 in LAMP stack

我正在將網站(PHP,MYSQL)更改為另一台服務器,並在Linux-Apache環境中對其進行配置。 問題是某些頁面顯示字符編碼錯誤。 數據以latin1_swedish_ci的形式存儲在mysql中,所涉及的php文件也以iso-8859-1編碼。 但是,如果我進行查詢,PHPMyAdmin可以正確顯示此數據。 HTTP標頭顯示“ text / html; charset = iso-8859-1”,因此這里沒有任何錯誤。

我不知道在哪里可以解決此問題。 我不知道這是Apache問題還是PHP以某種方式嘗試將數據讀取為utf-8而不是實際上是什么。

當前是“ SHOW VARIABLES LIKE'%char%';”的輸出;

+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+

您的數據未存儲為latin1_swedish_ci,而是存儲為latin1。 也就是iso-8859-1; 他們是一樣的東西。 瑞典語部分是整理。 這是常見的混淆點。

您與數據庫的連接(至少是用來顯示系統變量的連接)設置為utf8。 那不是latin1。

建立與數據庫的連接時,應該立即在php中以及使用交互式客戶端程序時發出此命令。

SET NAMES latin1

您可以在這里閱讀有關此內容: https : //dev.mysql.com/doc/refman/5.6/en/charset-connection.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM