Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL:将数据插入数据库字符集问题_Php_Mysql_Character Encoding - Fatal编程技术网

PHP/MySQL:将数据插入数据库字符集问题

PHP/MySQL:将数据插入数据库字符集问题,php,mysql,character-encoding,Php,Mysql,Character Encoding,我正在建立一个网站,从另一个页面获取文本并将其插入数据库 问题是所有特殊字符都使用HTML编码保存在数据库中,因此我需要使用以下方法转换输出: 我的意思是,我现在拥有的不是保存字符“”,而是将html版本“';”保存在数据库中。保存西班牙语字符或其他特殊字符时也会发生这种情况。我保存了“ñ;”,而不是ejample的字母“ñ” 这会浪费数据库中的空间,我还需要稍后使用内容类型转换输出,以便: 如何在保存之前转换或设置字符集,或者让MySQL进行转换 如果您需要知道以下是我如

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

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

我的意思是,我现在拥有的不是保存字符“”,而是将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("&ntilde;", 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编码的数据(其中没有实际的标记)是完全错误的(所需的额外空间量并不是其中的重要部分)。文本应保持为纯文本,直到需要编码为其他输出格式为止。最好改用。