1

当我尝试在 Broadleaf Admin 中添加报价时,名称或描述中的欧元符号 (€) 会在â¬保存后转换为。

奇怪的是,保存此优惠的代码时不会发生此行为。例如:

  • 我创建了一个名为“€ 5 促销”的促销
  • 保存后我会得到:(â¬5 promo坏)
  • 我在此促销中添加了一个名为“€ 5 代码”的代码
  • 保存后会是这样的:(€5 code好)

我认为这与保存有关,因为当我修改数据库中的字段时,它会正确显示。当我尝试编辑它并保存奇怪的符号时再次接管......

编辑 1

JerryOz 非常接近解决方案。我唯一需要添加的(在他的解决方案旁边)是下面的代码到我的 web.xml:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
4

1 回答 1

2

问题是应用程序在进入数据库时​​编码不正确。如果您使用的是 Tomcat,请将 connectionPropeties 添加到context.xml. 这将编码为 UTF-8 并允许将特殊字符正确保存在数据库中。这是一个示例:

<Resource name="jdbc/web" auth="Container" type="javax.sql.DataSource"
           maxActive="30" maxIdle="60" maxWait="10000"
           username="username" password="password" driverClassName="com.mysql.jdbc.Driver"
           connectionProperties="useUnicode=true;characterEncoding=utf8;"
           url="jdbc:mysql://localhost/broadleaf"/>

您还需要使用 in 配置连接器,URIEncoding="UTF-8"server.xml确保 GET 请求参数得到正确编码。这将允许在管理员中使用特殊字符过滤名称。这是一个示例:

<Connector port="8080" protocol="HTTP/1.1"
          connectionTimeout="20000"
          redirectPort="8443" 
          URIEncoding="UTF-8"/>

这与下面这个涵盖 java webapps 中的 UTF-8 的好答案有关:

如何让 UTF-8 在 Java webapps 中工作?

希望这可以帮助!

于 2014-07-08T18:39:19.857 回答