CSV导入期间的特殊字符编码

时间:2016-08-26 07:52:00

标签: php csv

我有脚本读取* .CSV文件,然后将其内容导出到MSSQL数据库。脚本仅通过CLI运行。

我的问题是此CSV文件包含带有ą,ó,ż,ź,ś等国家字符的字符串。例如,我有单词pracowników但在CLI中我看到单词pracownikˇw

我的代码

$handler = fopen($file, "r");
        if ($handler !== false) {
            while (($this->currentRow = fgetcsv($handler, 0, $this->csvDelimiter)) !== false) {

                $row = $this->setHeaders(
                    $this->currentRow,
                    $this->config[$type]['columnMapping']
                );

                if ($row !== false) {
                    $this->dataImported[$type][] = $row;
                }
            }

            fclose($handler);
        }

我尝试了什么

  • fgetcsv使用setlocale或不使用 - 不工作。
  • fgetcsv替换为fgets并通过str_getcsv阅读每一行 - 无效。
  • 每行使用utf8_encode - 无效。

其他信息

  • 根据我的PHP(PHP5.3)和几个编辑器,这个文件是用ANSII编码的,我试图用iconv解码它,但所有特殊字符总是被一些奇怪的符号替换,比如之前显示过。

1 个答案:

答案 0 :(得分:1)

$this->currentRow的循环上尝试使用具有特殊字符的每个元素。

echo mb_convert_encoding($data[$c],"HTML-ENTITIES","UTF-8");