我正在建立一个从另一个页面获取文本并将其插入数据库的网站。

问题是所有特殊字符都使用HTML编码保存在数据库中,因此我需要使用以下方法转换输出:

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

我的意思是,我现在所拥有的不仅仅是保存字符“”,HTML版本“ &#x27;”也保存在数据库中。保存西班牙语字符或其他特殊字符时也会发生这种情况。我得到了“ &ntilde;”,而不是jample的字母“ñ”。

这浪费了数据库中的空间,我还需要稍后使用content-type转换输出,因此:

我如何才能在保存之前转换或设置字符集,或者只是让MySQL转换它?

如果您需要了解以下如何连接数据库的信息:

function dbConnect() {
    $conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die ('Error.');
    return $conn;
}

    $conn = dbConnect();
    $stmt = $conn->stmt_init();


希望你能帮我!!
谢谢。

最佳答案

您可以使用html_entity_decode()将HTML转换为(真实)字符编码。

<? echo html_entity_decode("&ntilde;", ENT_COMPAT, "UTF-8"); ?>
ñ


请注意,“ HTML”不是通常意义上的字符编码,因此iconv之类的库或MySQL本身都无法理解。

我还建议(按照上面的示例)使整个应用程序使用UTF-8。由于Unicode已得到广泛支持,因此像ISO8859这样的单字符编码实际上已过时。

10-07 12:26
查看更多