繁体   English   中英

PHP - 如何在 Windows-1252 中保存文件?

[英]PHP - How to save a file in Windows-1252?

我在一个为 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 signature.txt: text/plain; charset=iso-8859-1

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

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

你需要utf8_decode

$myText = utf8_decode($myText);

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

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

当我第一次尝试这个解决方案时,我有一个误报,因为当我打开文件时,字符似乎被破坏了。 但是一旦用 outlook 打开它就很好了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM