php-utf8对文本进行两次编码。会不会有负面影响?

php-utf8对文本进行两次编码。会不会有负面影响?,php,mysql,utf-8,character-encoding,Php,Mysql,Utf 8,Character Encoding,MySQL数据库返回utf8编码文本。基本上,我使用了PDOattributeMYSQL\u ATTR\u INIT\u命令并通过了: SET CHARACTER SET utf8 它返回utf8编码文本。但是数据库中的一些文本是普通的utf8,类似于&alum按原样返回 因此,我需要在php中再次调用utf8\u encode,以获得实际的utf8char。工作正常 我想知道,对文本进行两次编码是否会产生任何负面影响,或者除了像上面那样对非编码文本进行编码之外,它不会影响其他任何东西 谢谢

MySQL数据库返回
utf8
编码文本。基本上,我使用了
PDO
attribute
MYSQL\u ATTR\u INIT\u命令
并通过了:

SET CHARACTER SET utf8
它返回
utf8
编码文本。但是数据库中的一些文本是普通的
utf8
,类似于
&alum按原样返回

因此,我需要在php中再次调用
utf8\u encode
,以获得实际的
utf8
char。工作正常

我想知道,对文本进行两次编码是否会产生任何负面影响,或者除了像上面那样对非编码文本进行编码之外,它不会影响其他任何东西

谢谢

编辑:

我使用以下代码获取正确的字符:

 $val = utf8_encode(addslashes(html_entity_decode(strip_tags($val))));
因此,它所做的是将以下文本转换为:

<font color=\"#222222\" face=\"arial, sans-serif\" size=\"2\"> Test Event  &nbsp; &nbsp;</font><span style=\"color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;\">Pers&ouml;nlichkeit Universit&auml;t&quot;</span>

ä
是一个html实体,可能一开始就不应该出现在数据库中。这与UTF-8无关

如果在
上调用
utf8\u encode
“ä;”
将不会发生任何事情,因为ISO-8859-1和UTF-8的编码是相同的。您将在浏览器中看到它所表示的字符,因为它被解释为html

作为一名普通的web应用程序开发人员,您永远不应该调用
utf8\u encode
。您实际上不需要将ISO-8859-1转换为UTF-8,首先是因为浏览器和MySQL不支持它。为了兼容性,他们将Latin1和ISO-8859-1别名为Windows-1252。其次,您可以让浏览器和数据库以UTF-8格式发送数据,这样就已经是UTF-8了,不需要进行任何转换

您也不应该转换为html实体-这是不必要的,因为UTF-8可以表示所有字符

数据库中的数据不应该与html有任何关系——那里的数据应该是规范的授权数据,就像数据的表示一样。目前还不清楚数据是否真的是
ä
ä
导致以下问题:


你的问题我一个字也听不懂。出于某种原因,每个人似乎都认为
utf8\u encode()
是一个神奇的函数,可以自动修复任何编码问题。它不是,只是从ISO-8859-1转换为UTF-8<代码>&明矾
是一个HTML实体。所有这些字符(&-a-l-u-m;)在ISO-8859-1和UTF-8中都是相同的,因此
utf8\u encode()
完全不起任何作用。这在其他情况下也没那么糟糕,它只会破坏你的数据。没错。我想我需要在那里更详细。我将编辑问题编号。我只是想知道utf8编码文本两次是否会有任何负面影响。简单明了。运行一次会损坏您的数据,所以运行两次会损坏更多数据。例如,用欧元符号进行测试。我明白了。谢谢
Test Event Persönlichkeit Universität\"