【问题标题】:PHP encoding issue reading files - ISO-8859-1 & UTF-8 ConflictPHP 编码问题读取文件 - ISO-8859-1 和 UTF-8 冲突
【发布时间】:2015-07-11 12:17:06
【问题描述】:

我有一个 php 文件,它读取我假设是 UTF-8 格式的 CSV 文件 - 通过 API 发送。我正在使用 fopen() 来阅读它。

问题是我的输出返回为:

IU?Q?JL?.?/Q?R??/)?J-.?))VH?/OM?K-NI?T0?P?*ͩT0204jzԴ?H???X??? @D??K

我检查了我的 php5 配置设置:

默认已经是 UTF-8 了 :/ ; php.net/default-charset ;default_charset = "UTF-8"

我也在下面将 ISO-8859-1 更改为 UTF-8:

[iconv] ;iconv.input_encoding = UTF-8 ;iconv.internal_encoding = UTF-8 ;iconv.output_encoding = UTF-8 ;mssql.charset = "UTF-8"

输出还是一样的。我可以采取任何建议或步骤来解决问题。

【问题讨论】:

    标签: php sql-server csv ubuntu encoding


    【解决方案1】:

    我从来没有用php打开过文件,但是,

    你用过吗

    $data = fopen($file);
    fgets($data);
    

    也是吗?

    【讨论】:

      【解决方案2】:

      如果您只是从源代码中读取,则没有问题,因为 php 不会对字符串进行任何编码假设。因此,如果您的源以 UTF8 格式向您发送数据,它是 UTF8,php 中的 default_charset 只是在您的页面之前发送的一个标头,可以通过多种方式覆盖。检查您的浏览器是否确实以正确的编码显示页面...在 Chrome 中,转到菜单更多工具/编码,在那里您将看到正在使用的编码。

      【讨论】:

        【解决方案3】:

        我不得不使用 compress.zlib 来解决这个问题 $f_pointer=fopen("compress.zlib:URL","r");

        【讨论】:

          猜你喜欢
          • 2016-10-04
          • 1970-01-01
          • 2011-09-23
          • 2012-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多