【问题标题】:struts html character encoding and decoding [duplicate]struts html字符编码和解码[重复]
【发布时间】:2017-01-26 20:08:00
【问题描述】:

我的 Tomcat server.xml 和 web.xml 和 jsp 页面编码已设置为“UTF-8”。 当html表单post一个特殊字符如Ď时,java代码故意使用StringEscapeUtils.unescapeHtml4(str)将这个特殊字符Ď保存在db中。当我从 DB 中获取值时,系统会打印出来并在 jsp 标签中,两个地方都显示符号? (问号)。 用另一个帖子“€符号未定义”,它解决了jsp渲染问题。但是tomcat系统输出/控制台仍然显示? (问号)

谢谢。

【问题讨论】:

  • 你将数据持久化到哪个数据库,数据库中配置了什么字符集?
  • 是oracle数据库。我没有 dba 权限,但我可以看到 Ď 显示在 db 字段中。您能否让我知道将角色保存在 DB 中的最佳做法是什么?我认为在 db 字段中保存 Ď 更容易。但事实证明,我似乎必须转换为编码。

标签: java jsp utf-8 struts2 decode


【解决方案1】:

好的,听起来您已经确认数据在数据库级别得到了适当的持久化和支持。我现在尝试添加一个 servlet 过滤器,让您的 struts webapp 以 UTF-8 编码处理所有请求和响应。

定义一个字符集过滤器,如下所示:

<filter-name>Set Character Encoding</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<!-- Define filter mappings for the defined filters -->
<filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <servlet-name>action</servlet-name>
</filter-mapping>

【讨论】:

  • 我的 web.xml 中已经有这个设置 SetCharacterEncoding/* filter-mapping> 但我用“action”值替换。它仍然无法正常工作。 .请指教。谢谢
  • 是的。这就是我在 web.xml 中的内容。但是jsp仍然渲染?并且系统输出仍然显示? .
猜你喜欢
  • 2011-06-21
  • 2023-04-04
  • 1970-01-01
  • 2016-05-02
  • 2014-12-01
  • 2018-05-13
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多