在Notepad ++中使用PHP的UTF8编码难度

时间:2012-01-24 02:21:04

标签: php encoding utf-8

我一直在制作一个程序,从另一个源CSV(用'SJIS'/ SHIFT-JIS编码)创建多个CSV。这是我创建它们的过程:

  1. 创建一个字符串,该字符串将保存输出CSV的内容
  2. 用适当的信息填写所说的字符串
  3. 使用mb_convert_encoding()从SJIS将字符串编码为UTF-8 代码:
                        $ 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. 使用对话框提示用户将文件保存在所需位置。 码:         $ zipContents = file_get_contents($ zipFileName);         标题('Content-Type:application / zip');         header(“Content-Disposition:attachment; filename = inflow.zip”);         标题(“Pragma:no-cache”);         标题(“过期:0”);         echo $ zipContents;
  6. 现在这是我的问题:当我在Notepad ++中打开时,我从zip文件创建的文件以“UTF-8无BOM”编码。但是,我要求这些文件只是简单的“UTF-8”。由于我以外的原因,我用来上传这些文件的库存程序不会显示CSV编码的“UTF-8无BOM”的正确字符。一旦我手动:打开文件,将其重新编码为“UTF-8”,并保存它们,文件是否能够在此库存程序中显示正确的字符。

    我已经阅读了大量文章,讨论了这个问题的相反问题,人们试图让他们的UTF-8文件在没有BOM的情况下编码。但是,我的情况恰恰相反。如果有一个简单的PHP解决方案,我会非常欢迎您的帮助!感谢您的阅读!!

1 个答案:

答案 0 :(得分:-2)

找到可能的解决方案,请参阅:How can I output a UTF-8 CSV in PHP that Excel will read properly?