【问题标题】:Swedish csv file encoding problems瑞典csv文件编码问题
【发布时间】:2014-07-21 11:23:08
【问题描述】:

瑞典语字母包含字母

唰唰

我尝试使用 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?

【问题讨论】:

    标签: php csv encoding


    【解决方案1】:
    Try this
        Å
    
        Å
    
        å
    
        å
    
        Ä
    
        Ä
    
        ä
    
        ä
    
        Ö
    
        Ö
    
        ö
    
        ö
    

    【讨论】:

      【解决方案2】:

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

      例如,使用这个小代码,我将瑞典文件编码为 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);
      

      瑞典语.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);
      

      【讨论】:

      • 如何在 PHP 中使用生成的 file_encoded.csv 来解析文件并与 artikelbenämning 等字符串进行比较?这成为 Artikelben&iuml &iquest &frac12 mning,因此不等于 artikelbenäming。由于“;”,我也遇到了问题。感谢您的帮助!
      • 原始 csv 文件中的分隔符是什么?如果是“;”会有问题,因为htmlentities,我没看到...
      • 是的; :(。我不敢相信这是个问题。有人说你应该只放 env(Lang... 或设置定位,但它也不起作用
      • 它的编码如下:Artikelben�mning 但它没有用,因为它不是 == Artikelbenäming。我想正确地选择字符串以使其有用。它可能在 html 中打印为 Artikelbenämning 但我不知道
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2016-05-08
      • 1970-01-01
      • 2017-01-22
      • 2023-03-30
      • 1970-01-01
      • 2011-11-11
      相关资源
      最近更新 更多