Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 UTF-8特殊字符作为奇怪字符插入表中_Php_Mysql_Xml - Fatal编程技术网

Php UTF-8特殊字符作为奇怪字符插入表中

Php UTF-8特殊字符作为奇怪字符插入表中,php,mysql,xml,Php,Mysql,Xml,我在这个网站上搜索了很多答案,但是没有一个是适合我的。我正在尝试使用PHP simplexml\u load\u字符串解析下面的XML 我的XML是: <?xml version="1.0" encoding="utf-8"?> <address> <name>Peter</name> <country>Großbritannien</country> </address> 当我使用ini字符集(“默认字符集”

我在这个网站上搜索了很多答案,但是没有一个是适合我的。我正在尝试使用PHP simplexml\u load\u字符串解析下面的XML

我的XML是:

<?xml version="1.0" encoding="utf-8"?>
<address>
<name>Peter</name>
<country>Großbritannien</country>
</address>
当我使用ini字符集(“默认字符集”、“UTF-8”)或标题(“内容类型:text/html;字符集=UTF-8”)时,结果是:

SimpleXMLElement Object
(
    [name] => Peter
    [country] => Großbritannien
)
但是,当我尝试使用PHP(标题设置为utf8)在数据库(MySQL)中插入国家值时,它的插入方式是Großbritannien。“我的表格”字符集是UTF8,列的排序规则是UTF8\U unicode\U ci。但是,当我直接将country值插入表中(使用phpMyAdmin或terminal)时,它的插入是正确的

我想知道为什么country值没有从我的PHP解析页面正确插入

我的PHP示例代码如下:

$notificationXml  = simplexml_load_string($xml); 
$con = $notificationXml->country;
mysql_query("INSERT INTO test_1 (con) values ('$con')");

请帮帮我。提前感谢大家。

在您的插入查询上方插入此项

mysql_query('SET NAMES utf8');
正如@deceze指出的,使用

mysql_set_charset('utf8');
a) 提供mysql_*函数的扩展被标记为已弃用。最好从
b) 您必须注意,即MySQL服务器在发送/接收数据时希望客户端使用的字符集。避免使用类似
SET NAMES…
的东西,因为这会使客户端mysql库对新的字符集/编码规则一无所知,因此某些字符处理可能无法按预期工作,甚至可能导致安全相关问题。使用专用的客户端机制来更改字符集。对于mysql,也就是说,对于mysqli和pdo,您应该像

$pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8')

(并使用php版本>=5.3.6)

数据库支持什么编码?我已将其设置为UTF8显示php代码,将数据插入数据库您是否为数据库连接使用了正确的字符集?是的,但不是。请参阅。非常感谢……现在似乎可以了。@Suraj:不要这样做。改用
mysql\u set\u charset
$pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8')