1

Spring MVC ベースの多言語 Web アプリケーションがあります。以下で説明するように、web.xml に CharacterEncodingFilter を設定しました。

<filter>
        <filter-name>SetCharacterEncodingFilter</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>SetCharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

これらの構成では、アプリケーションは期待どおりに正常に動作しています。

jsp "직원의상세미니" からこの韓国語の文字を渡すと、サービス レイヤーで、この文字が "ì§ìììì¸ë¯¸ë" としてエンコードされていることがわかります。

以下で説明するように、受信した所有者名で jdbc メタデータをクエリして、その中で使用可能なテーブルを取得する機能があります。

ResultSet resultSetTables = dbMetadata.getTables(owner,owner, "%", tableTypes);

1) この機能

ResultSet resultSetTables = dbMetadata.getTables("직원의상세미니","직원의상세미니", "%", tableTypes); 

スキーマ「직원의상세미니」で利用可能な7つのテーブルを返します

エンコードされた文字列 "ì§ìììì¸ë¯¸ë" で実行した場合

ResultSet resultSetTables = dbMetadata.getTables("ì§ìììì¸ë¯¸ë","ì§ìììì¸ë¯¸ë", "%", tableTypes); 

同じスキーマ「직원의상세미니」で利用可能な 0 個のテーブルを返します。

4

1 に答える 1

1

Tomcat が問題だと思います。HTTP コネクタで URI エンコーディングがデフォルトで ISO-8859-1 に設定されている可能性があります。

http://tomcat.apache.org/tomcat-5.5-doc/config/http.html、URIEncoding を UTF-8 に設定し、それが役立つかどうかを確認する必要がある場合があります。

Python コンソールですばやく試してみましたが、iso-8859-1 で提供された文字列を使用すると、投稿したのと同じ意味不明な結果が得られます。

>>> a = '직원의상세미니'
>>> print a.decode("iso-8859-1")
ì§ìììì¸ë¯¸ë
于 2012-12-23T10:37:39.673 に答える