[英]PHP unexpected character encoding
我有一個PHP腳本,可獲取ICS文件,對其進行一些更改,然后使用Content-Type: application/ics
和Content-Disposition: attachment; filename="test.ics"
重寫該文件以供下載Content-Disposition: attachment; filename="test.ics"
Content-Disposition: attachment; filename="test.ics"
。 該腳本工作正常。 但是,某些字符(例如'
被轉換為'
,但不是全部,只有那些我修改過的行。
當我var_dump
作為有效負載寫入的字符串時,瀏覽器可以正常顯示所有字符。
任何想法 ?
編輯:我從這里使用ICS解析器。 問題來自於此,但是在瀏覽了代碼之后,我找不到在哪里可以用htmlentities
替換某些字符。
您需要將&#[0-9]+
實體轉換為UTF-8
,可以為此使用preg_replace_callback和mb_convert_encoding ,即:
$string = "stack user's";
echo preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $string);
//stack user's
我認為您在修改文件時需要解碼html字符:
http://php.net/manual/zh/function.htmlspecialchars-decode.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.