我遇到了这个问题,以前我使用 php 5,现在我想出了 php 7,
问题是当我尝试从数据库中回显值时,它会返回奇怪的特殊字符,并且在我以前的网络中它返回正常。是 utf-8 问题吗?我尝试了元标记 UTF-8,并将排序规则 SQL 更改为 utf8_unicode_ci,但不知何故它根本没有帮助......
它像这样返回
 — 
我想返回的内容
 — 
您从数据库中得到的是一个 UTF8 编码的字符串。
您看到的字符是用西方编码(Windows Latin 1)解释的 UTF8 字符串。
如果您在字符集为拉丁语 1 的网页中包含该字符串,那么您将看到您发布的字符串;如果字符集是 UTF-8,那么您应该看到正确的字符(无需将它们转换为 HTML 实体)。
由于后者不是您的情况,您可以按以下步骤操作:
让你看到的字符存储在变量$string
中:你可以得到带有mb_convert_encoding
的html实体:
$html = mb_convert_encoding( $string, 'HTML-ENTITIES', 'UTF-8' );
这将导致:
 — 
由于转换后您会获得 ASCII 范围内的字符,因此生成的字符串适用于任何目标字符编码。
请注意,根据上述内容,甚至破折号—
也被转换(转换为—
)
这只是您面临的问题的快速解决方案。
我认为Machavity的评论:
">花一分钟时间读 stackoverflow.com/questions/279170/utf-8-all-the-way-through">
是一个很好的建议。