java - JSP:在mysql查询中执行非英文字符

标签 java mysql jsp unicode jdbc

我编写了一个 JSP 代码,需要运行一些包含非英语字符(波斯语)的 mysql INSERT 查询。我运行两种类型的查询,第一种是静态应用程序安装查询,第二种是用户输入。在执行这两个查询后,非英语字符被导入为“?”当我在应用程序本身和 phpMyAdmin 中检查它们时!

我试图在连接后执行这些查询,但没有帮助:

SET NAMES utf8
SET CHARACTER SET utf8
SET SESSION collation_connection = 'utf8_general_ci'

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

最佳答案

After execution of both of queries none english chars are imported as "?" as I check them in application itself and phpMyAdmin!

因此,数据库(或更具体地说,JDBC 驱动程序)在 INSERT 期间未使用 UTF-8。

通常数据库的 JDBC 驱动程序应该足够智能,以使用数据库和/或表指定的编码来存储数据。但在某些情况下,您还必须在连接字符串中指定字符编码。在 MySQL JDBC 驱动程序的情况下也是如此,因为它不使用数据库指定的编码,而是使用客户端指定的编码。 JDBC 驱动文档中应该已经回答了如何配置。例如在 MySQL 中,您可以阅读它 here :

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

也就是说与问题无关,实际上您应该尝试 avoid JSP 文件中的原始 Java 代码。这只会导致 future 出现另一种问题。

关于java - JSP:在mysql查询中执行非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468798/

相关文章:

javascript - 未经适当清理或验证的客户端潜在 XSS

java - FreeMarker 和 OSGI

java - Firebase admin java SDK - 当事件发生时获取更改数据而不是所有数据

java - 我需要帮助从 2 个单独的 Arraylist 创建一个新的 Arraylist

java - @EmbeddedId 和 @Embeddable 中的 @GenerateValue

mysql - 尝试在 Spring Boot 中更新时间表时出错

mysql ndb_mgmd --no-nodeid-checks - 启动错误

javascript - 如何在单击图例时显示和隐藏字段集内容

java - 如何删除两个外部字符之间的所有内容?

java - 单击按钮在 IE9 中不起作用,但没有错误消息(在 chrome 中起作用)