直接以 ISO 编码保存 PHP 创建的 CSV
Saving a CSV created by PHP directly in ISO encoding
我正在尝试使用 PHP 创建 CSV 文件。我想要 ISO-8859-1 编码。
到目前为止,我设法创建了 CSV 文件,但它具有 UTF-8 编码。
由于 this question 显示了如何将其从 ISO 转换为 CSV,我能够使其与 utf8_decode
一起工作,但我的目标是:
Create the file directly in ISO-8859-1 encoding directly.
这是我的代码(没有解码,问我你是否也想要):
$columns = array(
'option1' => 'Option1 title',
'option2' => 'Option2 title',
'option3' => 'Option3 title'
);
/* Setting default values for the array */
$default = array(
'option1' => 'value1',
'option2' => 'value2',
'option3' => 'value3'
);
/* Creating the CSV file */
$fp = fopen('/tmp/' . $this->fileName, "w");
if ($fp) {
fputcsv($fp, array_values($columns), ";");
foreach ($legListArray as $row) {
$data = array();
foreach ($columns as $key => $_dummy) {
if (substr($key, 0, 7) == "_field_") {
$data[] = $row[$key];
} else {
$data[] = $default[$key];
}
}
fputcsv($fp, $data, ";");
}
fclose($fp);
}
调用 fputcsv
时只需 map the array using utf8_decode
。
您只有两行受到影响:
fputcsv($fp, array_map('utf8_decode', array_values($columns)), ";");
...
fputcsv($fp, array_map('utf8_decode', $data), ";");
或者你可以在构建数组时做utf8_decode
,即:
$data[] = utf8_decode($row[$key]);
...
$data[] = utf8_decode($default[$key]);
我正在尝试使用 PHP 创建 CSV 文件。我想要 ISO-8859-1 编码。 到目前为止,我设法创建了 CSV 文件,但它具有 UTF-8 编码。
由于 this question 显示了如何将其从 ISO 转换为 CSV,我能够使其与 utf8_decode
一起工作,但我的目标是:
Create the file directly in ISO-8859-1 encoding directly.
这是我的代码(没有解码,问我你是否也想要):
$columns = array(
'option1' => 'Option1 title',
'option2' => 'Option2 title',
'option3' => 'Option3 title'
);
/* Setting default values for the array */
$default = array(
'option1' => 'value1',
'option2' => 'value2',
'option3' => 'value3'
);
/* Creating the CSV file */
$fp = fopen('/tmp/' . $this->fileName, "w");
if ($fp) {
fputcsv($fp, array_values($columns), ";");
foreach ($legListArray as $row) {
$data = array();
foreach ($columns as $key => $_dummy) {
if (substr($key, 0, 7) == "_field_") {
$data[] = $row[$key];
} else {
$data[] = $default[$key];
}
}
fputcsv($fp, $data, ";");
}
fclose($fp);
}
调用 fputcsv
时只需 map the array using utf8_decode
。
您只有两行受到影响:
fputcsv($fp, array_map('utf8_decode', array_values($columns)), ";");
...
fputcsv($fp, array_map('utf8_decode', $data), ";");
或者你可以在构建数组时做utf8_decode
,即:
$data[] = utf8_decode($row[$key]);
...
$data[] = utf8_decode($default[$key]);