PHP - 不替换 Õs

PHP - Not replacing Õs

所以今天我正在更新我编写的一些代码,这些代码从网页中获取一些数据并通过电子邮件将其发送给人们以方便使用。但是,我注意到无论是谁输入文本,都使用了一个程序,该程序使用了一些其他编码,这些编码有一个奇怪的 字符,在 Mac 罗马集中是 0xD5 (213)。但是当他们将其上传到他们的网站时,结果显示为 Õ。所以我使用 php 并这样做了:

$parsed = str_ireplace("Õ", "'", $parsed);

所以我这样做并测试了它,但它似乎没有用。谁能帮我?谢谢!

如果这只是您要纠正的一个异常,您可以使用十六进制转义序列指定它,例如:

$parsed = str_replace("\xD5", "'", $parsed);

只是 "Õ" 不起作用的原因是您的 PHP 文件的编码没有将 Õ 表示为 0xD5。字符串只是字节序列,您提供的 str_ireplace 不匹配。 (好吧,str_ireplace 会用它做一些时髦的事情,str_replace 在这里是首选。)


通常更适合处理该问题的方法是使用 iconv 将输入字符串从其源编码转换为您需要的输出编码。

示例:

$parsed = iconv('MACINTOSH', 'UTF-8', $parsed);

$parsed = iconv('MACINTOSH', 'ASCII//TRANSLIT', $parsed);

这里的//TRANSLIT是指当一个字符无法在目标字符集中表示时,将通过一个或几个看起来相似的字符来近似。有很多 ASCII(和其他)无法表示,因此如果您不输出 UTF-8(这将是理想的),音译可以派上用场。