【问题标题】:PHP - How to save a file in Windows-1252?PHP - 如何在 Windows-1252 中保存文件?
【发布时间】:2019-11-15 15:00:25
【问题描述】:

我在一个自动生成 Outlook 签名的系统上工作。生成 .htm 文件的部分效果很好。但现在我还需要添加 .txt 格式的文件。如果我在不改变编码的情况下使用内容,我所有的重音字符都将转换为不同的值,例如:“é”变为“é”或“ô”变为“ô”。

这个问题显然看起来像是某种编码冲突。我试图通过将文本值输入转换为“Windows-1252”编码来纠正它。

$myText = iconv( mb_detect_encoding( $myText ) , "Windows-1252//TRANSLIT", $myText);

但这并没有改变任何东西。我也试过:

$myText = mb_convert_encoding($myText, "Windows-1252");

它也没有用。对于这两个测试,我使用 Atom(我的 IDE)检查了文件类型,它将这些文件识别为 UTF-8。但是当我使用file -I signature.txt 在终端上检查时,它会以这种编码signature.txt: text/plain; charset=iso-8859-1 进行响应

请注意,如果我在 Atom 中手动将编码更改为 Windows-1252,则字符是正确的。

有人遇到过同样的问题吗? php中是否有另一种方式来指定文件的编码?

【问题讨论】:

  • 不确定是否仍然如此,但在过去,mb_detect_encoding 不会将文本检测为 UTF-8,除非您通过严格选项。
  • @Powerlord 我忘了说我也试过$myText = mb_convert_encoding($myText, "Windows-1252", "UTF-8");

标签: php encoding


【解决方案1】:

我想通了。要使用的代码是(正如@Powerlord 所指出的):

$monTexteTXT = mb_convert_encoding($monTexteTXT, "Windows-1252", "UTF-8");

当我第一次尝试这个解决方案时,我得到了一个误报,因为当我打开文件时,字符似乎被破坏了。但是用outlook打开后就没事了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多