Php 从脚本在数据库中插入UTF8字符时出现问题
我有一个小脚本,它通过GET接收一些数据,并将数据插入数据库。我的问题是发送一些UTF-8字符时。scritp接收它们时没有问题,但以一种奇怪的方式插入它们。我在我的页面中打印了查询,用phpmyadmin执行它,这样就可以正常工作了。因此,我的问题是在通过脚本执行查询时(如果使用这些字符执行常量查询,则无法工作)。通过邮寄发送字符是否解决了问题Php 从脚本在数据库中插入UTF8字符时出现问题,php,mysql,utf-8,insert,Php,Mysql,Utf 8,Insert,我有一个小脚本,它通过GET接收一些数据,并将数据插入数据库。我的问题是发送一些UTF-8字符时。scritp接收它们时没有问题,但以一种奇怪的方式插入它们。我在我的页面中打印了查询,用phpmyadmin执行它,这样就可以正常工作了。因此,我的问题是在通过脚本执行查询时(如果使用这些字符执行常量查询,则无法工作)。通过邮寄发送字符是否解决了问题 谢谢您的整个设置必须是UTF-8。这意味着您的网页、PHP、数据库连接和数据库表都必须处于UTF-8模式。鉴于它在管理页面中工作,而不是通过脚本,我猜
谢谢您的整个设置必须是UTF-8。这意味着您的网页、PHP、数据库连接和数据库表都必须处于UTF-8模式。鉴于它在管理页面中工作,而不是通过脚本,我猜这是您的数据库连接。在执行insert查询之前,请尝试执行一次
set names='utf-8'
,看看这是否解决了问题。如果是这样的话,那么您的数据库连接正在使用其他字符集,并在从PHP->database发送文本时将文本弄乱。您的整个设置必须是UTF-8。这意味着您的网页、PHP、数据库连接和数据库表都必须处于UTF-8模式。鉴于它在管理页面中工作,而不是通过脚本,我猜这是您的数据库连接。在执行insert查询之前,请尝试执行一次set names='utf-8'
,看看这是否解决了问题。如果是这样,那么您的数据库连接正在使用其他字符集,并在从PHP->database发送文本时将文本弄乱。尝试以下方法:
mysql_set_charset('utf8');
试试这个:
mysql_set_charset('utf8');
在查询之前将其添加到php文件中:
mysql_query('SET NAMES utf8');
例如:
//DB connection
$con = mysql_connect('localhost', 'root', '');//db details
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);//DB name
mysql_query('SET NAMES utf8');
//query
$sql="SELECT * FROM users WHERE uid=".$user_id;// your query
$result=mysql_query($sql);
在查询之前将其添加到php文件中:
mysql_query('SET NAMES utf8');
例如:
//DB connection
$con = mysql_connect('localhost', 'root', '');//db details
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);//DB name
mysql_query('SET NAMES utf8');
//query
$sql="SELECT * FROM users WHERE uid=".$user_id;// your query
$result=mysql_query($sql);
您需要为Mysql连接指定编码。根据您使用的mysql扩展,函数的名称可能会有所不同:提供更多信息。“以一种奇怪的方式”是没有用的。理想情况下,提供传输或存储的实际字节的hextdump,而不仅仅是从终端窗口剪切和粘贴的文本。这个可能的副本中的答案可以更好地说明这一点。您需要指定Mysql连接的编码。根据您使用的mysql扩展,函数的名称可能会有所不同:提供更多信息。“以一种奇怪的方式”是没有用的。理想情况下,提供传输或存储的实际字节的hextdump,而不仅仅是从终端窗口进行文本剪切和粘贴。这种可能的副本中的答案可以更好地说明这一点。最好使用
mysql\u set\u charset()
而不是set name
mysql\u set\u charset()的主要优点是因为它更安全。最好使用mysql\u set\u charset()
而不是set NAMES
mysql\u set\u charset()的主要优点是更安全。最好使用mysql\u set\u charset()
而不是set NAMES
最好使用mysql\u set\u charset()
而不是set NAMES