我编写了一个 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/