PHP 读取 UTF-8 CSV

Bis*_*hoy 5 php csv utf-8 drush drupal-8

我有一个从 CSV 文件读取的 PHP 脚本,该文件采用 UTF-8 格式,下面的代码将其视为 ASCII。如何更改代码以将文件读取为 UTF-8?

if (($handle = fopen("books.csv", "r")) === FALSE)
  throw new Exception("Couldn't open books.csv");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
Run Code Online (Sandbox Code Playgroud)

[编辑] 我当前代码的一个问题是,第一行的第一个值始终包含三个字节,用于标识开头附加的 UTF-8 文件。所以我猜一个按值或按行操作的解决方案可能不够好?

Jin*_*n.C 1

使用 fgets() 获取文件变量 $date 中的所有字符串,然后 mb_convert_encoding() 转换编码,然后 str_getcsv() 将字符串转换为数组。

if (($handle = fopen("books.csv", "r")) === FALSE)
    throw new Exception("Couldn't open books.csv");

$data = "";

// get file all strin in data
while (!feof($handle)) {
    $data .= fgets($handle, 5000);
}

// convert encoding
$data = mb_convert_encoding($data, "UTF-8", "auto");

// str_getcsv
$array = str_getcsv($data);
Run Code Online (Sandbox Code Playgroud)