【问题标题】:PHP import CSV with utf-8 accentsPHP 导入带有 utf-8 重音的 CSV
【发布时间】:2011-10-03 00:03:56
【问题描述】:

我在导入包含带有重音符号的(法语)名称的 CSV 文件时遇到问题...当它们被导入时,重音符号无法正确显示示例

félix 变成 fŽlix

文件是手工创建的,然后导入到 PHP 中。

我已经尝试了 utf8_encode() 和 utf8_decode() 并且下界函数将转换字符以便正确查看它们。

我的问题是我怎样才能让它正确呈现...转换字符集..等

根据我在这里看到的其他问题,我相信文本是用 Cp850 编码的。我正在使用 fgetcvs() 来获取内容。

【问题讨论】:

  • 您目前使用什么代码来读取文件? fopen/fgetcvs/等等?
  • 试着在你的脚本顶部说iconv_set_encoding("internal_encoding", "UTF-8");

标签: php csv utf-8 import


【解决方案1】:

在输出为 UTF 之前设置 Header Information

header('Content-Type: text/html; charset=utf-8');
$log = file_get_contents("log.csv");
echo utf8_encode($log);

输出

félix

【讨论】:

    【解决方案2】:

    请尝试iconv() 函数

    【讨论】:

    【解决方案3】:

    我认为这是迟到的答案,但可能对那些仍在寻找解决方案的人有所帮助。这只是一个微调。并不总是推荐。

    header('Content-Encoding: UTF-8');
    header('Content-type: text/csv; charset=UTF-8');
    header('Content-Disposition: attachment; filename=filename.csv');
    echo "\xEF\xBB\xBF"; // UTF-8 with BOM
    readfile("filename.csv");
    exit;
    

    【讨论】:

      【解决方案4】:

      我在上传时这样做

      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_dir .$target_file)) {
            $log = file_get_contents($target_dir .$target_file);
            file_put_contents($target_dir .$target_file, utf8_encode($log));
      

      【讨论】:

        猜你喜欢
        • 2013-06-13
        • 2017-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        • 2017-11-10
        • 1970-01-01
        相关资源
        最近更新 更多