瑞典csv文件编码问题

时间:2014-07-21 11:23:09

标签: php csv encoding

瑞典字母包含字母

  

AAO

我尝试使用PHP函数fgetcsv读取csv文件,但是我遇到了编码问题并且没有正确解释特殊字符。

我用fopen($ filePath,“r”)打开文件,我没有说明我知道的PHP中的任何编码。我的应用程序中的其他所有内容在编码方面都可以正常工作。

当我在开放式办公套件中打开目标csv文件时,我可以选择编码。如果我选择Unicode(UTF-8),则无法显示特殊字符。如果我选择一些ISO-8859,则会正确显示字母。

我一直在玩utf8_decode,utf8_encode,mb_convert_encoding,iconv和setlocale而没有运气。

我知道编码是什么,但我不明白这种情况。对于解决方案和对此处发生的事情的一个很好的解释,这将是很好的。

我猜我的文件是ISO-8859- *编码

  

如何正确解析文件,以便我可以使用其中的内容   PHP?

2 个答案:

答案 0 :(得分:1)

Try this
    Å

    Å

    å

    å

    Ä

    Ä

    ä

    ä

    Ö

    Ö

    ö

    ö

答案 1 :(得分:1)

您可以对文件进行编码,例如使用htmlentities

例如,使用这个litle代码,我将瑞典文件编码为ISO-8859-1,

$file = fopen("translations-sv.csv", "r");
$new_file = fopen("file_encoded.csv", "w");
while(!feof($file)) {

$line=fgets($file);
$line = str_replace(";", ",",$line);  //replace all ';' to ','
$encoded_line=htmlentities($line,ENT_QUOTES,'ISO-8859-1');

fwrite($new_file, $encoded_line);
}

fclose($file);
fclose($new_file);

Swedish.csv

title_orders;Beställningar
title_monthly_sales;Månadsförsäljning
title_settings;Inställningar

file_encoded.csv

title_orders,Beställningar
title_monthly_sales,Månadsförsäljning
title_settings,Inställningar

和,比较,

$new_file = fopen("file_encoded.csv", "r");

$word_to_find="Orderslutförande";
while (!feof($new_file) ) {

    $line_of_text = fgetcsv($new_file, 1024,",");
if($word_to_find==$line_of_text[1]) 
 echo $line_of_text[1]." is the same to $word_to_find<br>";
}
fclose($new_file);