将csv文件处理为UTF-8

时间:2015-03-03 17:34:36

标签: php csv encoding utf-8

试图弄清楚如何使用UTF编码处理csv文件。尝试了多种方法,比如在标题中添加这个utf8_encode()和这个:

header('Content-Type: text/html; charset=UTF-8');

但似乎没有任何效果。

代码是:

<?php
include 'head.php';
$csv = array_map("str_getcsv", file("translations/dk.csv"));
foreach ($csv as $line){
     $translate["dk"][ $line[0] ] = $line[1];
}if ($line[1] != NULL){
    $line[0] = $line[1];
}
echo $line[0];
fclose($csv);
?>

如何使用UTF-8编码回显输出?

2 个答案:

答案 0 :(得分:0)

当您在浏览器中显示它时,您应该使用有效的html并将元字符集设置为utf8:

<?php
include 'head.php';
?>
<!DOCTYPE html>
<html lang="dk">
<head>
    <meta charset="utf-8"/>
</head>
<body>
<?php

$csv = array_map("str_getcsv", file("translations/dk.csv"));
foreach ($csv as $line){
     $translate["dk"][ $line[0] ] = $line[1];
}if ($line[1] != NULL){
    $line[0] = $line[1];
}
echo $line[0];
fclose($csv);
?>
</body>
</html>

或者使用text / plain而不是text / html可以提供帮助:

header('Content-Type: text/plain; charset=UTF-8');

希望有所帮助。

答案 1 :(得分:0)

根据你描述的内容,看起来文件不是UTF-8格式,它可能在ISO-8859-1中,但你试图显示它好像是UTF-8,所以为什么你看到奇怪块状符号。

您有两个选项,您可以将文件条目转换为UTF-8:

foreach ($csv as $line)
    $translate["dk"][$line[0]] = utf8_encode($line[1]);

或者将文件实际编码声明为浏览器,以便正确显示:

header('Content-Type: text/html; charset=ISO-8859-1');

由于W3C建议使用UTF-8作为网络的默认编码,因此应优先选择第一个选项。

或者,您可以使用您喜欢的文本编辑器将整个文件转换为UTF-8并以此方式保存,因此您不必每次都将其转换为UTF-8。