我需要将从Mac Excel 2011导出的CSV文件转换为CMS识别的可导入格式(解决方案不应该相关,但导入格式适用于Drupal Feeds模块,尽管是目标)。
为了做到这一点,我需要在Vim中执行以下操作:
:%s/\r/\r/g
:w ++enc=utf8
这基本上意味着:
^M
:%s/\r/\r/g
将它们全部转换为CMS识别为回车的格式ASCII Extended
或类似名称。理想情况下,在将文件作为导入的一部分上传时,需要触发此过程,这意味着PHP将触发该过程,无论该过程是否与过程有关。但是我觉得在这个时候处理解决方案作为shell脚本或类似的东西感觉更舒服,但当然如果我能弄清楚如何将它挂钩到Drupal 7 Feeds中,欢迎使用PHP解决方案。
答案 0 :(得分:0)
一些未经测试的代码:
#!/bin/php
<?php
$replacements = array(
// Adjust destination char to your liking
"\r\n" => "\n",
"\r" => "\n",
"\n" => "\n",
);
// No risk to split chars: input is single byte
while( $line = fread(STDIN, 10240) ){
// Normalize line feeds
$line = strtr($line, $replacements);
// Convert to UTF-8 (adjust source encoding to your needs)
$line = iconv('CP1252', 'UTF-8', $line);
fwrite(STDOUT, $line);
}
用法:
./fix-csv < input.csv > output.csv