2013-08-16 55 views
1

嘗試導入CSV文件時,運行fgetcsv時阿拉伯字符消失,但是當我從fopen打印輸出時,阿拉伯字符顯示得很好。奇怪的是,這隻發生在我們的生產環境中,而不是在我的開發環境中,fgetcsv只讀阿拉伯字符。有沒有在生產中設置正確的服務器設置?fgetcsv()不讀取阿拉伯字符

+1

什麼是csv文件的編碼? – user4035

+0

無法重現:我在utf8中用阿拉伯語創建了一個測試文件。 fgetcsv正常工作。 – user4035

+0

你可以發佈文件嗎? – pguardiario

回答

2

fgetcsv()對基於系統區域設置的文件編碼做出了假設。正如PHP手冊所述:

此功能考慮到語言環境設置。如果LANG是例如 en_US.UTF-8,單字節編碼的文件被這個 函數讀錯了。

你可能想在你的兩臺機器比較區域設置和永久地改變它的其中一個,或者您fgetcsv()之前使用類似setlocale(LC_ALL, 'ar_AE.utf8')(第二個參數顯然取決於你的文件的編碼)。

+0

它不適用,因爲阿拉伯語永遠不會是單字節編碼。 – pguardiario

+0

@pguardiario我知道,但系統區域設置也可能是基於UTF-16的。 – lafor

+0

謝謝!顯然,生產服務器上的語言環境設置不正確。在'fgetcsv'之前使用'setlocale(LC_ALL,'en_US.UTF-8')'做了竅門。 – Cole