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 にエンコードされ、特殊文字が DB に正しく保存されます。サンプルは次のとおりです。

<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"/>

また、GET 要求パラメーターが正しくエンコードされるようURIEncoding="UTF-8"に、コネクタを構成する必要があります。server.xmlこれにより、管理者で特殊文字を含む名前をフィルタリングできます。サンプルは次のとおりです。

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

これは、Java webapps の UTF-8 をカバーする以下の素晴らしい回答に関連しています。

Java WebアプリケーションでUTF-8を動作させるには?

お役に立てれば!

于 2014-07-08T18:39:19.857 に答える