Php 如何防止网页中出现奇怪的字符

Php 如何防止网页中出现奇怪的字符,php,mysql,character-encoding,Php,Mysql,Character Encoding,通常,当将字符串从数据库输出到网页上时,特殊字符会显示为其他一些奇怪的字符(在我的示例中,em破折号会变成–€),我如何防止这种情况 我使用的是PHP+MySQL,我没有使用任何框架 我猜这是由于HTML和数据库之间的编码/字符集不匹配造成的,尽管我不知道如何修复它。在页眉标记中的页面顶部使用以下代码: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 在页眉标记的页面顶部使用以下代码: <

通常,当将字符串从数据库输出到网页上时,特殊字符会显示为其他一些奇怪的字符(在我的示例中,em破折号会变成–€),我如何防止这种情况

我使用的是
PHP+MySQL
,我没有使用任何
框架


我猜这是由于HTML和数据库之间的编码/字符集不匹配造成的,尽管我不知道如何修复它。

在页眉标记中的页面顶部使用以下代码:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

在页眉标记的页面顶部使用以下代码:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

您可以尝试此方法。使用以下php内置函数避免给定字符串中的字符。在您的示例中,使用数据库中的数据

html_entity_decode($given_string,ENT_QUOTES, "ISO-8859-1");

您可以试试这个。使用下面的php内置函数来避免给定字符串中的字符。在您的例子中,是来自数据库的数据

html_entity_decode($given_string,ENT_QUOTES, "ISO-8859-1");

在html视图页面中使用

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


如果您要插入其他语言字符来代替英语,而不是在html视图页面中使用该列
utf8 general ci

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


如果您要插入一些其他语言字符来代替英语,而不是使该列成为
utf8 general ci

Mojibake-这是

  • 客户端中的字节以utf8正确编码
  • 默认情况下,您可能使用
    集合名称拉丁1
    (或
    集合字符集(“拉丁1”)
    或…。(它应该是
    utf8
  • 表中的列被声明为
    字符集latin1
    (或者可能是从表/数据库继承的)(它应该是
    utf8

    • Mojibake-这是典型的

      • 客户端中的字节以utf8正确编码
      • 默认情况下,您可能使用
        集合名称拉丁1
        (或
        集合字符集(“拉丁1”)
        或…。(它应该是
        utf8
      • 表中的列被声明为
        字符集latin1
        (或者可能是从表/数据库继承的)(它应该是
        utf8

      在HTML页面上使用字符集UTF8,对于DB,在HTML页面上使用字符集UTF8,对于DB也使用字符集UTF8