【问题标题】:UTF-8 Queries with JDBC使用 JDBC 的 UTF-8 查询
【发布时间】:2012-10-17 22:35:02
【问题描述】:

我想向 MYSQL 询问一个 UTF-8 查询,但它不能正常工作。当我尝试以下查询时,结果确实出现了:

String query = "select * from Terms where Term = 'lol'";

但使用以下查询不会做出响应:

String query = "select * from Terms where Term = 'خدابخش'";

在哪里

'خدابخش'

部分是波斯语和 UTF-8 。 请注意,与数据库的连接很好。

【问题讨论】:

  • 您的数据库是否配置为支持 unicode?查询在您的 SQL Workbench 或您用于查询数据库的任何其他工具中是否正常工作?
  • 是的,当我在 MYSQL 中单独尝试查询字符串时,结果完全被获取。

标签: java mysql sql jdbc


【解决方案1】:

您可能需要在 JDBC 连接中设置字符编码。如果您使用的是 MySQL JDBC 连接器,您可以使用属性 characterEncoding。有点像这样:

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

您可能需要阅读连接器 JDBC 文档中有关编码和字符集的参考。

这里提到了 MySQL JDBC 连接器使用 characterEncoding:

Connector JDBC: Using Character Sets and Unicode

【讨论】:

  • @xinox 您介意将此帖子标记为问题的答案吗?
【解决方案2】:

以下一项或多项为真:

  1. Java 编译器(编译您的代码)被设置为以不同的编码读取源文件,而源文件实际存储的编码是不同的。换句话说,您的编辑器使用的编码、实际保存文件的编码以及 Java 编译器读取源代码时使用的编码之间存在差异。
  2. 您的数据库未正确设置为接受/存储 Unicode 字符。确保您的数据库设置正确。看起来你正在使用 MySQL。您可能希望使用 mysqldump 创建数据库转储,并见证数据库是如何根据字符集创建的。

【讨论】:

  • 表格字符集为 utf-8_general-ci 。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2014-06-12
  • 2021-01-08
  • 2015-12-05
相关资源
最近更新 更多