我有以下代码将一些数据插入我的数据库:
$query = "INSERT INTO `questions`(`title`,`content`,`set`,`date`) VALUES(:title,:content,:set,:date)";
$stmt = $db -> prepare($query);
$stmt -> bindParam(':title',$title,PDO::PARAM_STR);
$stmt -> bindParam(':content',$content,PDO::PARAM_STR);
$stmt -> bindParam(':set',$set,PDO::PARAM_INT);
$stmt -> bindParam('date',$date,PDO::PARAM_STR);
$stmt -> execute();
echo '<script>alert("שאלה נוספה בהצלחה");</script>';
问题是,每当我在数据库中查看插入的信息时,它都会变成奇怪的字符串,例如:בעברית
我不知道为什么会这样!
附言如果我插入英文字符串,没关系。它在数据库中显示为正确的英语。当我用我的语言插入数据时,就会发生这种情况。
可能是字符集和排序规则有问题。您可能需要将它们设置为 UTF-8
http://en.wikipedia.org/wiki/UTF-8
从绑定中删除 PDO::P ARAM_STR,然后在您的代码中使用它一次:
mb_internal_encoding("UTF-8"); //for utf unicodes
internal_encoding("your unicode"); //
或
default_charset = "your unicode";
检查了一会儿后,我发现了问题所在。
我从中获取输入的表单不在 HTML 标签中,因为它是一个快速且非常简单的界面。
在考虑了一下之后,我尝试在适当的HTML标签中做表单。我在这里附上了<form>
标签:
<html dir="rtl">
<head>
<title>Insert a new question</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> // important line
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<!-- form here -->
</body>
</html
完成此操作后,给出的输入是适当的希伯来字母,而不是HTML实体代码。
希望这会帮助某人。
每当我在数据库中查看插入的信息时,它都会变成奇怪的字符串,例如:
בעברית
我不知道为什么会发生这种情况!
我有。
这些符号与数据库完全无关。
它是HTML编码,mysql永远不会以这种方式对您的数据进行编码。
它是其他一些软件,可以在将数据添加到数据库之前转换您的数据。您只需输出这些字符即可轻松验证它(当然,不是由浏览器呈现的)。很可能是某种"全消毒"功能,您绝对必须摆脱。