我正在向第三方网站发出 cURL 请求,该网站返回一个文本文件,我需要在该文件上进行一些字符串替换,以将某些字符替换为它们的 html 实体等效项,例如我需要替换í
为í
.
直接在响应上使用string_replace/preg_replace_callback
不会导致匹配(无论是í
直接搜索还是使用其十六进制代码\x00\xED
),所以我utf8_encode()
在执行替换之前使用了。但将所有字符utf8_encode
替换为.í
Ã
为什么会发生这种情况,使用 php 对任意一段文本执行 UTF-8 替换的正确方法是什么?
*编辑 - 一些进一步的研究表明
utf8_decode("í") == í;
utf8_encode("í") == ÃÂ;
utf8_encode("\xc3\xad") == ÃÂ;