PHP/MySQL:将数据插入数据库字符集问题
我正在建立一个网站,从另一个页面获取文本并将其插入数据库 问题是所有特殊字符都使用HTML编码保存在数据库中,因此我需要使用以下方法转换输出:PHP/MySQL:将数据插入数据库字符集问题,php,mysql,character-encoding,Php,Mysql,Character Encoding,我正在建立一个网站,从另一个页面获取文本并将其插入数据库 问题是所有特殊字符都使用HTML编码保存在数据库中,因此我需要使用以下方法转换输出: 我的意思是,我现在拥有的不是保存字符“”,而是将html版本“';”保存在数据库中。保存西班牙语字符或其他特殊字符时也会发生这种情况。我保存了“ñ;”,而不是ejample的字母“ñ” 这会浪费数据库中的空间,我还需要稍后使用内容类型转换输出,以便: 如何在保存之前转换或设置字符集,或者让MySQL进行转换 如果您需要知道以下是我如
我的意思是,我现在拥有的不是保存字符“”,而是将html版本“';
”保存在数据库中。保存西班牙语字符或其他特殊字符时也会发生这种情况。我保存了“ñ;
”,而不是ejample的字母“ñ”
这会浪费数据库中的空间,我还需要稍后使用内容类型转换输出,以便:
如何在保存之前转换或设置字符集,或者让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转换为(真实)字符编码
<? echo html_entity_decode("ñ", ENT_COMPAT, "UTF-8"); ?>
ñ
ñ
请注意,“HTML”不是通常意义上的字符编码,因此像iconv
这样的库以及MySQL本身都不理解
我还建议(根据上面的示例)让整个应用程序使用UTF-8。由于Unicode得到如此广泛的支持,单字符编码(如ISO8859)实际上已经过时了。也许您应该使用,而不是第一个字符只替换HTML特殊字符
&
,
和“
并且不是每个可以由命名实体字符引用表示的字符都像后者那样。如果有任何非英语字符,我建议使用UTF-8。您可以运行SQL
SET NAMES UTF-8
在连接到数据库之后,使用UTF-8建立数据库连接
这样做时,在保存数据时不应使用“htmlspecialchars”或“HTMLSpecialTies”。Con您能否解释一下在我的情况下如何使用htmlspecialchars?您如何将数据存储到数据库中?或者您只是从中读取数据?htmlspecialchars没有帮助,因为它用于编码HTML实体,而不是解码它们。但是,不首先编码它们将避免此问题。同意在数据库中存储HTML编码的数据(其中没有实际的标记)是完全错误的(所需的额外空间量并不是其中的重要部分)。文本应保持为纯文本,直到需要编码为其他输出格式为止。最好改用。