我正在构建一个从其他页面获取文本并将其插入数据库的网站。
问题是所有特殊字符都使用HTML编码保存在数据库中,因此我需要使用以下命令转换输出:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
我的意思是,我现在所拥有的不仅仅是保存字符“'”html版本“'
”保存在数据库中。当保存西班牙语字符或其他特殊字符时也会发生这种情况。我没有用“ñ”作为例子,而是保存了“ñ
”。
这会浪费数据库中的空间,我还需要稍后使用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();
希望你能帮助我!! 感谢。
答案 0 :(得分:1)
您可以使用html_entity_decode()
将HTML转换为(真实)字符编码。
<? echo html_entity_decode("ñ", ENT_COMPAT, "UTF-8"); ?>
ñ
请注意,“HTML”不是通常意义上的字符编码,因此iconv
等库不能理解,也不会被MySQL本身理解。
我还建议(上面的例子)让整个应用程序使用UTF-8。由于Unicode受到广泛支持,因此ISO8859等单字符编码实际上已经过时了。
答案 1 :(得分:1)
如果有任何非英文字符,我建议使用UTF-8。您可以运行SQL
SET NAMES UTF-8
在连接到dbase后立即以UTF-8建立dbase连接。
执行此操作时,保存数据时不应使用“htmlspecialchars”或“htmlentities”。
答案 2 :(得分:0)
也许您应该使用htmlspecialchars
而不是htmlentities
,其中第一个只替换HTML特殊字符&
,<
,>
和{{1}并不是每个可以由命名实体字符引用表示的字符,如后者所做的那样。