使用以下maven插件解决了问题:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>-Dfile.encoding=UTF8</argLine> </configuration> </plugin>
上面的插件将解决编码问题 的 命令行构建 强> 。
的 更新: 强> 当你解决问题 的 在服务器上运行项目 强> :
1-运行为
2-运行配置
3-将服务器的编码更改为UTF-8,如下图所示
你必须使用 ?useUnicode=yes&characterEncoding=UTF-8 进入db-url。
?useUnicode=yes&characterEncoding=UTF-8
您在XML中遇到的错误很可能是因为使用了“&amp;”这不是XML中允许的实体。你应该对连接进行编码,因此工作连接URL应该是类似的
<property name="url" value="jdbc:mysql://localhost:3306/DB_Name?useUnicode=true&characterEncoding=UTF-8"/>
您还可以确保为tomcat配置正确的服务器,例如将URIEncoding添加到连接器
<connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
将指定用于解码URI的字符编码。您应该找到服务器的等效项
变为乱码。看到 http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored 讨论导致它的原因,以及代码中需要更改的内容。
为了进一步验证,做 SELECT HEX(...) FROM ... ;该字符串应该有十六进制 C398C2A7C399E2809EC398C2B1C399C5A0C398C2A7C398C2B6
SELECT HEX(...) FROM ...
C398C2A7C399E2809EC398C2B1C399C5A0C398C2A7C398C2B6
相反,如果你得到了 C383CB9CC382C2A7C383E284A2C3A2E282ACC5BEC383CB9CC382C2B1C383E284A2C385C2A0C383CB9CC382C2A7C383CB9CC382C2B6 ,那么你有“双重编码”。
C383CB9CC382C2A7C383E284A2C3A2E282ACC5BEC383CB9CC382C2B1C383E284A2C385C2A0C383CB9CC382C2A7C383CB9CC382C2B6