无法读取csv中的连字符值

时间:2012-10-19 03:22:59

标签: php csv

在从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>';
}

提前致谢。

1 个答案:

答案 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');