特殊字符问题

3
当我从数据库中显示内容时,我得到了这个:
“有些人将有工作。其他人会想要一个。他们是我的人,他们是我的客户,他们被剥夺了自己的权利。”
该文本是用户通过带有tinyMCE的文本区域输入的。我如何使用preg_replace()函数将句子中的特殊字符替换为“ ”,但不包括字符:<>?
2个回答

1

这篇文章绝对值得一读。处理UTF-8字符是我们所有人都会遇到的问题。诀窍似乎是在它们进入数据库之前捕捉它们或修复数据库,以便在它们进入时不会出现错误。但一旦它们进入数据库,就会稍微困难一些。


我已经有这个<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />了。 - unknown
它需要的不仅仅是内容类型。问题几乎肯定是您已将utf-8字符存储在数据库中,但数据库仅接受非Unicode字符(这是默认设置)。因此,您在数据库中有损坏的Unicode。在输出上设置内容类型并不能使它们变得更好。 - Chuck Vose

0

正如Chuck所提到的,这是数据库问题。除非您只想显示非Unicode字符,即拉丁字符,那么preg_replace就是正确的方法。您需要足够了解字符集以过滤掉不需要的内容。

但是,如果您只是想让所有内容都能够正常显示,即没有垃圾字符,那么请将数据库中相应的部分更改为接受utf-8编码。

例如,如果您正在使用mySQL,请尝试将字段和表编码更改为能够接受UTF-8。默认值为latin1_general_ci - 尝试将其更改为utf8_general_ci。希望这解释清楚了我的观点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接