如何使用PHP脚本转换CSV文件

时间:2015-07-29 23:54:16

标签: php csv utf-8 iconv

我需要将CSV文件转换为UTF-8并使用PHP脚本重命名。

以下代码在我的电脑上运行,但现在我需要在服务器上执行此操作作为CRON任务

iconv -f UTF-16LE -t UTF-8 OLD-FILE.csv > NEW-FILE.csv

任何人都知道PHP中的等价物。非常感谢。

3 个答案:

答案 0 :(得分:3)

一种简单的方法是使用以下命令将CSV文件加载到字符串中:

然后你可以使用这个命令UTF-8对字符串进行编码:

最后使用file_put_contents将字符串写入文件。

完成的代码可能如下所示:

$file_data = file_get_contents('/my/path/to/file.csv');
$utf8_file_data = utf8_encode($file_data);
$new_file_name = '/my/path/to/new_file.csv';
file_put_contents($new_file_name , $utf8_file_data );

确保Web服务器具有读取和写入适当位置的正确权限。

以下是file_put_contents()的链接:

答案 1 :(得分:0)

如果iconv可用,您可以使用等效的PHP:http://php.net/manual/en/function.iconv.php注意这需要一个字符串,您需要读入文件http://php.net/manual/en/function.fread.php然后将其写出http://php.net/manual/en/function.file-put-contents.php但是这种方法可能较慢,对于大文件,它需要将文件加载到内存中。

答案 2 :(得分:0)

所以这是我通过头脑风暴找到的解决方案:

class HelloWorldService(ServiceBase):
    @srpc(Unicode, Integer, _returns=Iterable(Unicode))
    def say_hello(name, times):
        for i in range(times):
            yield 'Hello, %s' % name

application = Application([HelloWorldService], # <--- spyne.Application
    tns='spyne.examples.hello',
    in_protocol=Soap11(validator='lxml'),
    out_protocol=JsonDocument()
)

if __name__ == '__main__':
    from wsgiref.simple_server import make_server

    wsgi_app = WsgiApplication(application)    # <--- spyne.WsgiApplication
    server = make_server('0.0.0.0', 8000, wsgi_app)
    server.serve_forever()

唯一的pb是输出大小是输入的两倍。如果我在我的电脑上使用ICONV,它的大小就是HALF ......

如果有人知道我想听听原因。