特殊字元顯示不正確

特殊字元顯示不正確

當我將檔案從伺服器 A (Debian 7.4) 複製到伺服器 B (Debian 7.4) 時遇到問題。檔案中的波蘭語特殊字元在伺服器 B(在 mcedit 中)上無法正確顯示。

locale我在伺服器A 上建立了一個帶有波蘭語特殊LANG=pl_PL.UTF-8字元LANGUAGELC=ALL檔案pl_PL.UTF-8。然後我 tar 文件,並在 Server BI 上使用 wget 命令下載 tarred 文件。在伺服器 BI 解壓縮檔案上,當我查看檔案內容 (mcedit) 時,波蘭語字母顯示不正確。有“鑽石”而不是特殊字元。當我locale在伺服器 B 上運行時LANG=en_US.UTF-8。除LANGUAGE和之外的其他變數LC=ALL也設定為en_US.UTF-8

然後我運行資料庫遷移(php 腳本)並將損壞的資料插入到資料庫中。當我在遷移中添加行時,波蘭語特殊字元將被替換為類似的字串Å›(波蘭字母ś被替換為Å›)。

我在 mcedit 中檢查了伺服器 A 和伺服器 B 上的檔案在兩台伺服器上具有相同的值。 Polsih 字母「ś」在兩台機器上均為 C5 9B(十六進位)。

最糟糕的是,每次出現特殊字元時,我都必須手動檢查並修正資料庫中的錯誤。

也許當我透過 php 遷移腳本編輯資料庫中的列值時,它也會損壞資料庫中的資料。一旦我從表中讀取數據,然後進行操作,然後保存,我的數據也被損壞。

如果我將伺服器 B 上的區域設定更改為pl_PL.UTF-8其他語言(如德語、捷克語等)中的特殊字元將可以正常工作嗎?如果是字體問題那麼為什麼資料庫遷移也會損壞?我使用 UTF-8 那麼每種語言的每個特殊字元都應該正確顯示嗎?如何正確顯示每種語言的特殊字元以及如何正確執行 php 遷移?

更新 1:
伺服器 Alocale -a輸出:

C
C.UTF-8
pl_PL.utf8
POSIX

伺服器Blocale -a輸出:

C
C.UTF-8
en_US.utf8
POSIX

在兩台伺服器上 locale -m 輸出很多字元映射(在兩台機器上似乎相同)

答案1

locale -a檢查和的輸出locale -m,確保伺服器 B 安裝了正確的區域設定和字元集,以正確解釋 pl_PL.UTF-8

相關內容