当前位置: 首页 > 面试题库 >

Java中的utf8问题

何涵育
2023-03-14
问题内容

我有下表:

create table test
(
  fname char(20) character set utf8 collate utf8_turkish_ci,
  id int primary key
);

我要插入数据,如下所示:

resultSet.executeQuery("set namee utf8");
preparedStatement = connection.prepareStatement("insert into test(fname) values(?)");
preparedStatement.setstring(1,"alis");
preparedStatement.executeUpdate();

但是,当我检索数据时,它们类似于?????

有什么问题,我该如何解决?


问题答案:

根据MySQL JDBC驱动程序文档,您还需要在JDBC连接URL中设置字符编码。这是一个例子:

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

否则,MySQL JDBC驱动程序将使用平台默认编码在通过网络发送之前将字符转换为字节,在您的情况下显然不是UTF-8。然后,所有未发现的字符将被问号替换。

另外,在检索数据时,您需要确保显示/写入字符的控制台/文件也支持/使用UTF-8。否则,它们也将成为问号。如何解决此问题取决于您如何/在何处显示/写入这些字符。

也可以看看:

  • Unicode-如何正确获取字符?

顺便说一句,您在SET NAMES这里不需要查询。



 类似资料:
  • 问题内容: 如标题所述,我在java和mysql之间有问题 mysql数据库,表和列是utf8_unicode_ci。我有一个应用程序,它从xml中获取一些输入,然后编写查询… 此方法返回包含一个或多个SQL插入查询的String数组。然后 和和特殊字符都存储为? 因此特殊字符无法正确存储: 存储为 存储为 有什么建议吗? 谢谢 问题答案: 解决了,我忘了在初始化Connection时添加编码:

  • 问题内容: 我正在将WordPress博客和phpBB论坛迁移到新的托管服务器中。我正在使用phpMyAdmin从先前站点中的数据库导入SQL脚本。 当我用Kate打开.sql脚本时,它说它使用UTF8作为编码。当我在新服务器中导入sql时,可以在phpMyAdmin中选择编码,默认情况下选择utf8。 仍然,当我完成数据库的导入后,我直接在phpMyAdmin中阅读了帖子文本,并看到诸如“é”,

  • 问题内容: 我当前正在oracle中使用具有NLS_CHARACTERSET WE8ISO8859P1的数据库,因此可以说我在varchar2字段中存储了一个值为maž(带重音字符)的值,因此在数据库中将其存储为maå¾。现在,当我尝试使用查询select * from table从其中fieldValue =’maž’检索它时,它返回0行,然后当我尝试再次插入它时,它给了我一个约束错误,说值已经

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: UTF-8一直到 我正在其他人已经开发的网站上开发一些新功能。 我的字符集有问题。 我看到该数据库在utf8中有一些表,在latin1中有一些表 因此,我正在尝试转换UTF8中的所有表。 我为一个表做了(现在该表的字段也是utf8),但是没有成功。 我正在使用普通的mysql连接。我必须放置任何配置以说它必须与utf8连接到数据

  • 本文向大家介绍SQL server不支持utf8 php却用utf8的矛盾问题解决方法,包括了SQL server不支持utf8 php却用utf8的矛盾问题解决方法的使用技巧和注意事项,需要的朋友参考一下 核心代码 当插入数据,或修改数据的时候,把utf-8,转为gbk,存入数据库。 当获取数据的时候,将数据转为utf-8。 这个方法在底层的数据中设计,上层调用即可。 sqlserver 建库指

  • 问题内容: 我遇到以下字符编码问题,以某种方式设法将具有不同字符编码的数据保存到数据库(UTF8)中,下面的代码和输出显示2个示例字符串以及它们的输出方式。其中之一需要更改为UTF8,而另一个已经更改为。 如何/应该去检查是否应该对字符串进行编码? 例如,我需要正确输出每个字符串,那么如何检查它是否已经是utf8或是否需要转换? 我正在使用PHP 5.2,mysql myisam表: 输出1: 输