簡體   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