我在使用MySQL和PHP时遇到了一些问题。
我从CSV加载数据并将其写入数据库。不幸的是,变音符号显示不正确,因此例如,ü以u00fc的形式写入数据库。
我使用MySQL,因为在建立MySQL连接后,我执行以下命令
mysql_set_charset('UTF8', $newsystem);
mysql_query("SET CHARACTER SET 'UTF8'", $newsystem);
排序规则设置为utf8_general_ci。
要输入数据,使用json_encode转换数据。
数组创建如下:
$jsonOrderDaten = array('id' => $daten[11], 'bezeichnung' => $daten[12], 'stueckzahl' =>$daten[14], 'preis' => $daten[15], 'mwst_satz' => $daten[16]);
Und der MySQL Eintrag erfolgt so:
$insertquery = "INSERT INTO `e_paket` (`paket_id`, `ebay_verkaufsnr`, `adress_daten`, `bestell_daten`, `ebay_order`, `status`) VALUES ('$packid', '$ebayorderid', '$jsonKD', '$jsonOD', 1, 0)";
mysql_query($insertquery ,$newsystem);
有人可以帮我解决我的问题吗?
祝你好运, 帕斯卡
答案 0 :(得分:0)
这里的问题是JSON编码。所有特殊的unicode字符都被转义(例如德语变音符号)。
要解决此问题,您可以在编码方法上设置JSON_UNESCAPED_UNICODE
标志,如下所示:
$jsonOD = json_encode($jsonOrderDaten ,JSON_UNESCAPED_UNICODE);
请注意,您应该注意SQL注入!
答案 1 :(得分:0)
我认为使用" LOAD DATA LOCAL INFILE"会解决你的问题。它比正常插入更快。有关详细信息,请https://dev.mysql.com/doc/refman/5.7/en/load-data.html。
答案 2 :(得分:0)
你也可以mysql_query ("SET NAMES UTF8");
此外,不仅连接具有字符编码,而且数据库,表和每列都有自己的默认编码。检查它们是否设置为不同的东西。
Mysqli,注入,prepared_statements,其他人已经评论过它们。