iT邦幫忙

0

PHP setlocale() 在Server上跟Local的結果不一樣

  • 分享至 

  • xImage

各位好,小弟在解析CSV檔案的時候遇到一件很神奇的事情
因為檔案常常由中國供應商提供 編碼語系常常搞得我很頭痛
這次遇到的情形是在local測試使用
setlocale(LC_ALL, 'zh_CN.gb2312');
可以順利顯示
在Server上卻有部分文字會產生亂碼

最後使用
setlocale(LC_ALL, 'en_US.UTF-8');
在Local及Server上都可以正常顯示

我猜測編碼應該是UTF-8 只是有些文字剛好編碼位置相同所以才能夠顯示
但這樣沒辦法解釋為什麼在Server跟在Local會有不同的結果

有人知道什麼原因會導致這個情況發生嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0

使用 gb2312 原本就支援的漢字就不多。約6000多字。(剛查了一下,現在是7000多了)
所以很容易造成部份字是無法正常顯示的。

大多數來說,我還是會用zh_CN.UTF-8來跑。
當然,碰到真的跑gb2312編碼的軟體,還是無解的。

jasonb122 iT邦新手 5 級 ‧ 2020-02-27 15:22:57 檢舉

對 之前真的有遇過gb2312 第一次遇到試很久才成功顯示
不過這次是 明明編碼都是設定gb2312 但同樣的資料在local能正常顯示 Server上卻會有亂碼 到現在還是找不出原因

環境不同,預設的編碼都有可能會不同的。
你要查一下對應的編碼是否兩邊一樣。

系統的環境也是會被影響。

我要發表回答

立即登入回答