2010-07-29 65 views
2

我正在使用fopen讀取csv和fgetcsv以讀取csv行。 csv被編碼爲Windows-1252,我如何將它轉換爲UTF-8,以便它不會剪切沒有標準字符的行?使用PHP將Windows-1252 csv轉換爲UTF-8使用PHP

到目前爲止,我已經試過如下:

setlocale(LC_ALL, 'en_GB.UTF-8'); 

drupal_convert_to_utf8($csv_line[3], 'Windows-1251'); // (I'm using Drupal 6.16) 

似乎都失敗。

回答

5

您可以使用iconv進行此類工作。

+0

我已使用以下方式查看iconv: $ str ='Felleskjøpet'; echo iconv('Windows-1252','UTF-8',$ str); 此輸出: Felleskj¿pet – digital 2010-07-29 11:09:05

+0

您確定您的輸入是在'Windows-1252'嗎?是什麼讓你相信? – 2010-07-29 11:55:00

+0

當我保存測試php的時候,enc的類型是錯誤的,把它設置爲Windows-1525的作品。 我的下一個問題是讓它與一組數據一起工作。 – digital 2010-07-29 13:01:26

3

我不知道drupal_convert_to_utf8函數,但看看mb_convert_encoding。

嘗試使用mb_list_encodings確保您的實現支持Windows-1252。如果不嘗試使用ISO 8859-1,則基本相同(http://en.wikipedia.org/wiki/Windows-1252)。

您還應該確保您的csv實際上在Windows-1252中。嘗試使用mb_detect_encoding,並使用嚴格的標誌。