php-utf8对文本进行两次编码。会不会有负面影响?
MySQL数据库返回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。工作正常 我想知道,对文本进行两次编码是否会产生任何负面影响,或者除了像上面那样对非编码文本进行编码之外,它不会影响其他任何东西 谢谢
utf8
编码文本。基本上,我使用了PDO
attributeMYSQL\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 </font><span style=\"color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px;\">Persönlichkeit Universität"</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\"