如何在Spring管理的MySQL JDBC连接上设置useUnicode = true和characterEncoding = utf8属性
问题内容:
我目前正在构建Spring MVC
Web应用程序,数据库是至关重要的后端部分。但是,无论出于何种原因,Spring都拒绝将数据作为UTF-8处理。由于视图,资源和浏览器均设置为Unicode,数据库中的表也设置为Unicode(并且还读取了许多类似的问题),因此我已经确定问题出在数据库连接上。
应该在connectionProperties中为JDBC驱动程序提供两项:useUnicode(设置为 yes
和characterEncoding(设置为 utf8 )),事实证明,这是 不可能的 。
JDBC是一个bean,因此通过XML文件进行配置,如下所示:
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/<database>" />
<property name="username" value="<not telling>" />
<property name="password" value="<not telling>" />
此设置会将从数据库中提取的所有非字母数字字符(例如箭头或希腊字母)转换为问号。显然,这是不可接受的。
我尝试了多种解决方案:将JDBC
URL指定为jdbc:mysql://localhost:3306/<database>?useUnicode=yes&characterEncoding=utf8
,与my.ini
文件(和MySQL
Workbench)一起播放以强制将数据库中的所有内容默认设置为utf8
字符集,而这引起了最大的麻烦:添加<property name="connectionProperties" value="useUnicode=yes;characterEncoding=utf8" />
。事实证明,在单个bean中设置两个connectionProperties实际上是不可能的,因为…在任何地方都没有提到分隔符(bean将尝试将其读取为试图将其设置yes;characterEncoding=utf8
为的值useUnicode
)。所以我的问题是:我如何utf8?
问题答案:
该问题可能是由于指定 utf8 而不是 UTF-8引起的
。从使用的字符集和Unicode:
在客户端上指定字符编码时,请使用Java样式的名称。下表列出了MySQL字符集名称和相应的Java样式名称…
和 utf8 映射到 UTF-8 。尝试以下JDBC URL:
jdbc:mysql:// localhost:3306 /?useUnicode = yes&characterEncoding = UTF-8