Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 特殊字符问题_Php_Preg Replace_Special Characters - Fatal编程技术网

Php 特殊字符问题

Php 特殊字符问题,php,preg-replace,special-characters,Php,Preg Replace,Special Characters,当我显示数据库中的内容时,我得到以下信息: ��有些人会有工作。其他人会想要一个。他们是我的人民,他们是我的客户,他们的权利被剥夺 此文本由用户通过带有tinyMCE的textarea输入。如何将句子中的特殊字符(使用preg_replace())替换为“”,除了以下字符:?完全值得一读。处理UTF-8字符是我们都会经历的事情。诀窍似乎是在它们进入数据库之前捕获它们,或者修复数据库,以便它们进入数据库时不会损坏。一旦他们到了那里,虽然会稍微困难一些。正如Chuck上面提到的,这是数据库的问题。除

当我显示数据库中的内容时,我得到以下信息:

��有些人会有工作。其他人会想要一个。他们是我的人民,他们是我的客户,他们的权利被剥夺


此文本由用户通过带有tinyMCE的textarea输入。如何将句子中的特殊字符(使用preg_replace())替换为“”,除了以下字符:?

完全值得一读。处理UTF-8字符是我们都会经历的事情。诀窍似乎是在它们进入数据库之前捕获它们,或者修复数据库,以便它们进入数据库时不会损坏。一旦他们到了那里,虽然会稍微困难一些。

正如Chuck上面提到的,这是数据库的问题。除非您只希望显示非Unicode字符,即拉丁字符,否则是的,preg_replace是一种方法。您需要充分了解角色集,以过滤掉不需要的内容

但是,如果您只是希望所有内容都能很好地显示,即没有垃圾字符,那么请将数据库的相应部分更改为接受utf-8


e、 g.如果您使用的是mySQL,请尝试更改字段和表编码,以便能够接受UTF-8。默认值为latin1\u general\u ci-尝试将其更改为utf8\u general\u ci。希望这能解释我的观点。

我已经有了这一点,它需要的不仅仅是内容类型。问题几乎可以肯定,您在数据库中存储了utf-8字符,但数据库只接受非unicode字符(这是默认设置)。所以数据库中的unicode被破坏了。在输出上设置内容类型并不会减少它们的破坏性。