2012-01-24 53 views
0

我一直在製作一個程序,用於從另一個源CSV(用'SJIS'/ SHIFT-JIS編碼)創建多個CSV。下面是在我創建它們的進程:在記事本中使用PHP的UTF8編碼困難++

  1. 創建一個字符串,將保持輸出的內容CSV的
  2. 填寫稱串用自己正確的信息
  3. 編碼字符串爲UTF-8從SJIS使用mb_convert_encoding() 代碼:
    $ contents2 = mb_convert_encoding($ contents,「UTF-8」,「SJIS」);
  4. 使用PHP創建的庫提供的方法zip壓縮包,我想要的文件,使用addFromString() 代碼及其對應的字符串追加:
    $ zipFileName =「output.zip」;

    $zip = new ZipArchive; 
        if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE){ 
         $zip->addFromString('customer.csv', $contents2); 
         ...do for the other files 
         $zip->close(); 
        } 
        else{ 
         echo 'Failed! File not created!'; 
        } 
    
  5. 提示用戶使用對話框將文件保存到其所需的位置。 code: $ zipContents = file_get_contents($ zipFileName); header('Content-Type:application/zip'); header(「Content-Disposition:attachment; filename = inflow.zip」); header(「Pragma:no-cache」); header(「Expires:0」); echo $ zipContents;

現在這是我的問題:當我在Notepad ++中打開文件時,從zip文件創建的文件以「UTF-8 without BOM」編碼。但是,我需要這些文件只是簡單的「UTF-8」。由於我之外的原因,我用來上傳這些文件的庫存程序不會顯示用「UTF-8 without BOM」編碼的CSV的正確字符。一旦我手動:打開文件,將其重新編碼爲「UTF-8」,並保存它們,文件是否能夠在此清單程序中顯示正確的字符。

我已經閱讀了大量有關這個問題的討論文章,其中人們正試圖使他們的UTF-8文件變成沒有BOM的編碼。但是,我的情況與此完全相反。如果PHP中有一個簡單的解決方案,我會比歡迎幫助!謝謝閱讀!!

+0

我不明白。您正在將文件轉換爲SJIS,不是嗎? – deceze

回答

-2

找到了一個可能的解決方案,看到這個:How can I output a UTF-8 CSV in PHP that Excel will read properly?

+0

感謝我正在閱讀的鏈接,但是我需要與此文件功能相反的鏈接;我在哪裏添加BOM到文件。我發現其他鏈接討論你正在提出的同樣的事情,但不是相反。 http://stackoverflow.com/questions/3127436/adding-bom-to-utf-8-files http://stackoverflow.com/questions/2558172/utf-8-bom-signature-in-php-文件 下面是PHP支持的編碼;注意:有「UTF-8」但默認爲「沒有BOM的UTF-8」 http://www.php.net/manual/en/mbstring.supported-encodings.php – user1166155

+0

哦,好的。我正在研究它。我會盡快給您回覆。 –

+0

你使用uft8_encode函數嗎?你有沒有嘗試過fputcsv功能? –