试图弄清楚如何使用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编码回显输出?
答案 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。