我有一个脚本,可以读取*.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
解码,但所有特殊字符总是被一些奇怪的符号替换,如之前所示。
chcp
更改区域设置为支持这些字符的区域设置,但请记住它对Unicode的支持非常有限。然而,也许问题是您需要设置正确的合作和数据库的编码,以便其他应用程序也可以正常读取它。 - Xorifelse