大家好,我在java中创建了一个应用程序,允许用户将数据存储在MySQL数据库中。每当我输入这个بهرواریدهرچوون我就得到了??????。有什么方法可以解决这个问题吗?明天之前完成这项工作真的很重要......我从来没有遇到像这样的问题,现在我正在为库尔德斯坦的一家公司创建一个数据库应用程序,现在我的朋友问了,它是否存储了数据与他们的人物?心脏病发作!请帮忙!
我在使用XAMPP的本地计算机上使用PhpMyadmin
答案 0 :(得分:2)
发生了什么:
SET NAMES latin1
生效(默认,但错误)CHARACTER SET latin1
(默认,但错误)当你INSERTed
数据时,它被转换为latin1,它没有阿拉伯语(库尔德语/波斯语/等)字符的值,所以问号替换了它们。
治愈(未来INSERTs
):
mysqli_set_charset('utf8')
(或无论您的客户需要什么来建立CHARACTER SET
)CHARACTER SET utf8
<meta...utf8>
应该在顶部附近。上面的讨论是关于字符编码的CHARACTER SET
。现在提供COLLATION
上的提示,用于比较和排序。
要仔细检查数据是否正确存储,请执行此操作
SELECT col, HEX(col)...
。
هرچوون
应该回来D987E2808CD8B1DA86D988D988D986
utf8中的阿拉伯字符具有D8xx或D9xx的十六进制。
(utf8mb4
与utf8
的效果一样;或者适用于阿拉伯语。)
坏消息:插入并转换为&#39; ???&#39;无法恢复。
答案 1 :(得分:0)
将以下代码放入connection
PHP文件中,然后在phpmyadmin(mysql)中将排序规则设置为utf8_general_ci或utf8_unicode_ci:
<?php
$servername="localhost";
$username="root";
$password="";
$databasename="ab1";
$conn = new mysqli($servername, $username, $password, $databasename);
if ($conn->connect_error) {
die("connection failed" .$conn->connect_error);
}else
echo "connection sucssessfullly";
$conn->query("SET NAMES 'utf8'");
$conn->query("SET CHARACTER SET utf8");
?>