【问题标题】:Spring 2.5 form/jsp encoding problemSpring 2.5 form/jsp编码问题
【发布时间】:2010-12-07 18:48:03
【问题描述】:

我遇到了一个非常烦人的问题:我创建了一个带有 spring 表单标签的表单,当我插入带有非拉丁字符的文本时,我得到了一系列问号。我在 web.xml 中使用了 CharacterEncodingFilter 但是我仍然面临同样的问题,我在控制器的 formBackingObject 方法中设置了 UTF-8 中的字符编码,我已经将页面编码字符集和 enctype 设置为 UTF-8,但没有结果。我知道这里有类似的帖子我已经尝试了建议的解决方案,但没有任何改变!有什么建议吗?提前谢谢你

【问题讨论】:

  • 那么,您是在数据库中存储和检索数据吗?
  • 是的,我的数据存储为问号!

标签: java jsp spring-mvc character-encoding


【解决方案1】:

当 DB 编码或 HTTP 响应编码不能接受所获得的字节用于指示它使用的编码时,通常会出现一系列问号。

由于您已将页面编码设置为 UTF-8,因此 HTTP 响应编码部分很好(假设您所做的只是将 <%@page pageEncoding="UTF-8" %> 放在 JSP 顶部)。

所以,DB 编码是可疑的。您需要确保指示数据库使用正确的编码来存储字符。您应该在 CREATE DATABASECREATE TABLE 语句中执行此操作。对于某些 JDBC 驱动程序,您还需要在 JDBC 连接字符串中传递一个额外的参数来指定传输字节的编码。详细信息取决于所使用的 DB 和 JDBC 驱动程序,因此您可以查阅相应的手册。如果您遇到问题,请更新您的问题以包含使用的数据库品牌/版本。

另见:

【讨论】:

  • 谢谢你的回答。我忘了提到我使用休眠和 mysql。但是当我打印值时 -via system.out.println- 在它们存储在数据库中之前我得到了问题-mark-sequence.So这是system.out.println的问题吗?或者实际上我在数据库部分之前做了一些事情?
  • 这是另一个问题,是的。您还需要指示 logger/stdout 使用 UTF-8。另请参阅链接文章中的“开发环境”部分。
  • 好的!我正在阅读你提到的那篇文章,我会试试你说的,我会告诉你的!谢谢你的帮助! :)
猜你喜欢
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多