在从csv文件中读取带连字符的值时,我看到连字符被转换为â€
我的csv文件包含以下数据:
05‐30‐2012,user,500
06‐30‐2012,user,1500
阅读完毕后的行:
05â€30â€2012,user,500
06â€30â€2012,user,1500
为什么会这样?我该如何纠正?
这就是我所做的:
$lines = file('data.csv');
foreach($lines as $line_num => $line){
if($line != ''){
echo '<pre>';
print_r($line);
echo '</pre>';
}
提前致谢。
答案 0 :(得分:0)
如果输出编码不是UTF-8,则需要将UTF-8输入文件转换为输出编码。例如,假设您对浏览器的输出应为ISO-8859-1
(Apache设置的常见默认值),则utf8_decode
会将您的UTF-8 CSV数据转换为正确的编码。
$lines = file('data.csv');
foreach($lines as $line_num => $line){
if($line != ''){
echo '<pre>';
print_r(utf8_decode($line));
echo '</pre>';
}
如果你想要UTF-8输出(或者你可以使用它),请尽可能早地在脚本中设置default_charset
PHP设置,这样PHP就会设置正确的HTTP标头。
ini_set('default_charset','UTF-8');