![](/img/trans.png)
[英]PHP: How to convert string to WINDOWS-1252 entities/characters?
[英]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.