我们的客户向我们发送了一个 CSV 数据文件,我需要将其导入到 Postgresql 8.3.9 数据库中的特定表中。数据库使用UTF-8字符编码,即我们的CMS允许多种语言,例如法语,通过CMS以法语输入数据库。一种特殊的工具是让客户端将图像上传到服务器,然后用法语为它们输入“alt”标签。但是,由于需要进行批量更新,我们已收到一个 CSV 文件以供输入特定表格 - 用于图像 alt 标签,使用法语。
CSV 有一些特殊字符,例如“é” - 例如“Bottes Adaptées Amora Cuir Faux-Croco Fauve Photo d'Ensemble”
图像本身托管在两个地方 - 一个是 CDN,一个是本地数据库备份和本地服务器(Web 服务器)文件备份。我正在使用 PHP 脚本来读取 CSV 文件并执行必要的操作,以便在两个地方更新“alt”标签 - 我们的 Web 数据库和 CDN。
但是,当我阅读 CSV(使用 PHP)时,字符并没有像预期的那样“出来”。该数据以“Bottes Adaptèes Amora Cuir Faux-Croco Fauve Photo d'Ensemble”的形式发布。
我认为这与数据库没有任何关系,但它与我的 PHP 文件读取 CSV 数据有关。即使我打印它正在读取的数据,上面的特殊字符也不会像上面那样打印,它的打印就像特殊字符没有被识别一样。其他字符打印正常。
这是我正在使用的代码(这里没有使用一些特殊的自定义函数来与数据库交互,但可以忽略它们)。CSV 文件由 {column 1}(图像名称)和 {column 2}(用于 ALT 标记)组成。
$handle = fopen($conn->getIncludePath() . "cronjobs/GIB_img_alt_tags_fr.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
//normally I run a query here to check if the data exists - "SELECT imageid, image_fileref FROM table1 WHERE image_fileref = '". $data[0]. "'");
if ($conn->Numrows($result)) { //if rows were found -
$row=$conn->fetchArray($result);
//printing the data from $row here
}
}
fclose($handle);