gpt4 book ai didi

java - 阔叶 UTF-8 编码

转载 作者:行者123 更新时间:2023-11-30 03:50:20 25 4
gpt4 key购买 nike

当我尝试在 Broadleaf 管理中添加报价时,名称或说明中的欧元符号 (€) 在保存后会转换为 â�

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

  • 我创建了一个名为“5 欧元促销”的促销
  • 保存后我会得到:âØ5 promo(坏)
  • 我在此促销中添加了一个名为“5 欧元代码”的代码
  • 保存后将如下所示:€5 代码(好)

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

编辑 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>

最佳答案

问题是应用程序在访问数据库时未正确编码。如果您使用的是 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"/>

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

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

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

How to get UTF-8 working in Java webapps?

希望这有帮助!

关于java - 阔叶 UTF-8 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com