2017-03-01 45 views
0

我正在將站點移動到新服務器,並且在新英文字符中出現錯誤的字母排序。在舊的服務器,我得到「é」在新的顯示「」NGINX/PHP/MySQL在非英文字符中的錯誤排版

一些提示:

一)每個站點都從同一個MySQL服務器讀取,所以,這個問題」不是個t任何MySQL服務器配置。靜態HTML也顯示錯誤的字符,不僅是來自數據庫的字符串。

b)兩個網站都有完全相同的源代碼。因此,有沒有類似的東西只是把<meta charset="UTF-8">

三)舊服務器用戶PHP 5.5.9新的PHP 30年5月6日,雙方的Ubuntu/Nginx的

d)我已經確認雙方的php.ini文件,我沒有看到任何差異!

E)當執行shell命令curl -I *URL*我得到:

舊服務器:

HTTP/1.1 200 OK 
Server: nginx 
Date: Wed, 01 Mar 2017 20:00:43 GMT 
Content-Type: text/html 
Connection: keep-alive 
Keep-Alive: timeout=60 
X-Powered-By: PHP/5.5.9-1ubuntu4.20 

新服務器:

HTTP/1.1 200 OK 
Server: nginx/1.10.1 (Ubuntu) 
Date: Wed, 01 Mar 2017 20:01:21 GMT 
Content-Type: text/html; charset=UTF-8 
Connection: keep-alive 

我在curl -i答案母豬這個Content-Type: text/html; charset=UTF-8新的服務器,但我不知道它來自哪裏。

任何想法在哪裏可以找到問題?

舊服務器:http://www.pimentaingressos.com/ 新的:http://pimenta.curtipiu.net/

+0

[UTF-8直通]的可能重複(http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – Qirel

回答

0

對於MySQL:

  1. 檢查數據庫chararter集:http://php.net/manual/en/mysqli.get-charset.php
  2. 設置,如果需要與http://php.net/manual/en/mysqli.get-charset.php
  3. 更多調試信息也許http://php.net/manual/en/mysqli.character-set-name.php


對於PHP

  1. 檢查你的PHP編碼功能:http://php.net/manual/en/function.mb-list-encodings.php

  2. 如果使用輸出緩衝:http://php.net/manual/en/function.mb-output-handler.php

  3. 您可以設置PHP內部ecnoding http://php.net/manual/en/function.mb-internal-encoding.php

  4. 更多在MultiByte上http://php.net/manual/en/ref.mbstring.php

在我的現場主機上,我只需要修復phphmyadmin中的排序規則,使其工作。在我的開發虛擬機上,我需要設置內部編碼(PHP列表的第3點)。多年來,我遇到了一件或多件我列出的事情,希望它能讓你走上正軌。