用Kurdish字体存储数据MySQL?

时间:2015-05-05 17:49:52

标签: java mysql unicode phpmyadmin

大家好,我在java中创建了一个应用程序,允许用户将数据存储在MySQL数据库中。每当我输入这个بهرواریدهرچوون我就得到了??????。有什么方法可以解决这个问题吗?明天之前完成这项工作真的很重要......我从来没有遇到像这样的问题,现在我正在为库尔德斯坦的一家公司创建一个数据库应用程序,现在我的朋友问了,它是否存储了数据与他们的人物?心脏病发作!请帮忙!

我在使用XAMPP的本地计算机上使用PhpMyadmin

2 个答案:

答案 0 :(得分:2)

发生了什么:

  • 你有utf8编码的数据(好)
  • SET NAMES latin1生效(默认,但错误)
  • 该列已声明CHARACTER SET latin1(默认,但错误)

当你INSERTed数据时,它被转换为latin1,它没有阿拉伯语(库尔德语/波斯语/等)字符的值,所以问号替换了它们。

治愈(未来INSERTs):

  • utf8编码数据(好)
  • mysqli_set_charset('utf8')(或无论您的客户需要什么来建立CHARACTER SET
  • 检查列和/或表默认为CHARACTER SET utf8
  • 如果您在网页上展示,<meta...utf8>应该在顶部附近。

上面的讨论是关于字符编码的CHARACTER SET。现在提供COLLATION上的提示,用于比较和排序。

要仔细检查数据是否正确存储,请执行此操作 SELECT col, HEX(col)...
ه‌رچوون应该回来D987E2808CD8B1DA86D988D988D986
utf8中的阿拉伯字符具有D8xx或D9xx的十六进制。

utf8mb4utf8的效果一样;或者适用于阿拉伯语。)

坏消息:插入并转换为&#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");
?>