我一直在製作一個程序,用於從另一個源CSV(用'SJIS'/ SHIFT-JIS編碼)創建多個CSV。下面是在我創建它們的進程:在記事本中使用PHP的UTF8編碼困難++
- 創建一個字符串,將保持輸出的內容CSV的
- 填寫稱串用自己正確的信息
- 編碼字符串爲UTF-8從SJIS使用mb_convert_encoding() 代碼:
$ contents2 = mb_convert_encoding($ contents,「UTF-8」,「SJIS」); 使用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!'; }
- 提示用戶使用對話框將文件保存到其所需的位置。 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中有一個簡單的解決方案,我會比歡迎幫助!謝謝閱讀!!
我不明白。您正在將文件轉換爲SJIS,不是嗎? – deceze