Hax*_*ale 20 java spring jdbc spring-mvc
我目前正在构建Spring MVC webapp,数据库是重要的后端部分.但无论出于何种原因,Spring拒绝将数据处理为UTF-8.由于视图,资源和浏览器都设置为Unicode,因此数据库中的表也是如此(并且还要阅读相当多的类似问题),我已经确定问题在于数据库连接.
JDBC驱动程序应该在connectionProperties中提供两个项目: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>" />
Run Code Online (Sandbox Code Playgroud)
此设置将从数据库中提取的所有非字母数字字符(例如箭头或希腊字母)转换为问号.显然,这是不可接受的.
我尝试了多种解决方案:指定JDBC URL jdbc:mysql://localhost:3306/<database>?useUnicode=yes&characterEncoding=utf8,使用my.ini文件(和MySQL Workbench)来强制数据库中的所有内容都默认为utf8charset,这引起了最大的麻烦:添加<property name="connectionProperties" value="useUnicode=yes;characterEncoding=utf8" />.事实证明,在单个bean中设置两个connectionProperties实际上是不可能的,因为......在任何地方都没有提到的分隔字符(bean会尝试将其读作为尝试设置yes;characterEncoding=utf8为值useUnicode).所以我的问题是:我如何utf8?
hmj*_*mjd 36
问题可能是由指定utf8而不是UTF-8引起的.从使用字符集和Unicode:
在客户端指定字符编码时,请使用Java样式名称.下表列出了MySQL字符集名称和相应的Java样式名称......
和utf8映射到UTF-8.请尝试以下JDBC URL:
JDBC:MySQL的://本地主机:3306 /了useUnicode = YES&的characterEncoding = UTF-8
你试过了吗:
<property name="connectionProperties">
<props>
<prop key="useUnicode">yes</prop>
<prop key="characterEncoding">utf8</prop>
</props>
</property>
Run Code Online (Sandbox Code Playgroud)
还有:您是否尝试过连接数据库的简单Java客户端(控制台应用程序)?UTF-8在这种情况下是否有效?
请注意,如果您使用的是Spring Boot,则可以使用属性来执行此操作,application.properties而不必在连接字符串中添加额外的参数:
把它放到application.properties中:
spring.datasource.connectionProperties=useUnicode=true;characterEncoding=utf-8;
Run Code Online (Sandbox Code Playgroud)
小智 6
我在使用 Spring-boot + 嵌入式 H2 + Hibernate 时遇到了同样的问题,但问题出在读取 SQL 脚本的时候。(data.sql) 每次我读取任何外来字符时,数据库中的编码都会被破坏。
将以下行添加到我的 application.properties 解决了问题:
spring.datasource.sqlScriptEncoding=UTF-8
如果可能,请转到控制台并手动添加一些数据。如果外来字符以正确的方式出现。那么这个解决方案可能适合你。
我在这里找到了解决方案:
http://ufasoli.blogspot.com/2014/07/spring-boot-jpa-broken-encoding-on.html
| 归档时间: |
|
| 查看次数: |
52249 次 |
| 最近记录: |