【问题标题】:file_put_contents encoding used on web servers?web 服务器上使用的 file_put_contents 编码?
【发布时间】:2012-09-04 21:58:41
【问题描述】:

我正在尝试使用file_put_contents(以及file_get_contents)和UTF-8 ¥,在此stackoverflow 帖子之后:How to write file in UTF-8 format? 使用:

$data = mb_convert_encoding($data, 'UTF-8', 'OLD-ENCODING');

这并没有得到很好的解释,因为它会产生以下错误:

mb_convert_encoding(): Illegal character encoding specified

所以'OLD-ENCODING' 只是他们使用的占位符。 我的问题是我应该把它改成什么编码? ASCII 还是 ISO-8859-1?大多数网络主机使用什么编码?有关系吗?

当我打开文件时,我将正确获取符号,前提是我将记事本设置为 UTF-8 编码。如果我用另一个字符集打开它,它将显示为“?”。

【问题讨论】:

    标签: php


    【解决方案1】:

    尝试不使用第三个参数。

    $str = mb_convert_encoding($str, "UTF-8");
    

    auto:

    $str = mb_convert_encoding($str, "UTF-8", "auto");
    

    更多信息和示例: http://php.net/manual/function.mb-convert-encoding.php

    【讨论】:

    • ofc 有效。正如第一个程序员规则所说:“尽可能简单”:)
    • 我用很多不同的场景对其进行了测试,并且每次都有效。谢谢,这值得更多的支持:)
    • ty,但你知道.. 我所做的只是阅读文档中的 2 行。下次自己试试这个:)
    【解决方案2】:

    mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));

    mb_detect_encoding

    【讨论】:

    • 谢谢!但这会检测到服务器上使用的编码?我的符号是否转换为正确的服务器编码?
    • 不,它检测到$data上的编码
    • 哦,这样对 file_get_contents 有效。放进去怎么样? Web 服务器使用什么编码?
    • 那么,你可以简单地做file_put_contents($file, utf8_encode($data));
    • "将 ISO-8859-1 字符串编码为 UTF-8。"这意味着网站上使用的 $data 需要采用 ISO 格式,并且您将其存储在 UTF-8 中。这似乎不对。我想应该是 file_get_contents($file, utf8_encode($data);
    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2016-07-19
    相关资源
    最近更新 更多