簡體   English   中英

闊葉UTF-8編碼

[英]Broadleaf UTF-8 encoding

當我嘗試添加在闊葉管理員的報價,歐元符號(€)的名稱或描述被轉換成â¬保存后。

奇怪的是,為此優惠保存代碼時不會發生此行為。 例如:

  • 我創建了一個名為“€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>

問題是該應用程序進入數據庫時​​編碼不正確。 如果您使用的是Tomcat,請在context.xml中將connectionPropeties添加到您的資源中。 這將編碼為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:

如何使UTF-8在Java Webapps中工作?

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM