我在将双引号插入我的mysql数据库时遇到问题。
我必须将标题更改为UTF8,因为我将显示西班牙语(ñ,重音符号)。
我运行一个页面(PHP)在我的数据库中插入一条消息:
header('Content-Type: text/html; charset=utf-8');
$newMessage = $_POST['newChatMessage'];
$currentUser = $_SESSION['mundialUser'];
$currentUserId = $_SESSION['idPlayer'];
$newMessage = $_POST['newChatMessage'];
date_default_timezone_set('America/New_York');
$messageDate = date( "Y-m-d H:i:s", time());
$chatMessageQuery = "INSERT INTO chat (message, user, user_id, date) values (:message, :user, :user_id, :date)";
$con->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
$chatMessage = $con->prepare($chatMessageQuery);
$chatMessage->execute(array(':message'=>$newMessage, ':user'=>$currentUser, ':user_id'=>$currentUserId, ':date'=>$messageDate));
当我在数据库中签入时,双引号会像“而不是简单地”一样出现。西班牙语 - 插入如下:ñ。
然后要显示,我的主页在头部有这个:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
我使用utf8_decode
打印从数据库中检索到的消息。
结果是:西班牙语 - 显示正确,但双引号显示为\"
而不是"
插入我的数据库或显示时我缺少什么?
答案 0 :(得分:2)
双引号出现像“而不是简单”
您的一些代码是添加这些斜杠。或者魔术引号的古老特征被关闭。两者都应该被禁用。
西班牙语 - 插入如下:ñ。
当实际的init已经完成时,发送mysql init 命令是没有意义的。
SET NAMES
不是一个神奇的颂歌,需要一些特殊的舞蹈来执行,而是简单而简单的SQL查询。因此,您可以通过query()
方法运行它。或者,更好的是,在DSN中设置charset。
答案 1 :(得分:-1)
您应该查看表/数据库的字符集。至少在葡萄牙语中,这可能是一件令人头疼的问题