1

次のディレクティブを使用する JSP ページがあります。

<%@page contentType="text/html; charset=iso-8859-1" pageEncoding="iso-8859-1"%>

したがって、ページ内のフォームは ISO-8859-1 エンコーディングを使用して送信され、Bean はこの形式に従ってエンコードされた文字列を (setXXX() メソッドで) 受信します。

JSP をデフォルトで UTF-8 を使用する JSF 2 に「変換」したいと考えています。JSF に ISO-8859-1 を強制的に使用させてページ ディレクティブをシミュレートするにはどうすればよいですか?

jboss 6でMojarra + richfacesを使用しています。

ありがとうございました!

4

2 に答える 2

5

encodingの属性を設定します<f:view>

<f:view encoding="ISO-8859-1">

ただし、非 Unicode エンコーディングに固執することは、最近では推奨されなくなりました。あなたの Web アプリケーションは世界支配の準備ができておらず、エンドユーザーがとにかく Unicode でエンコードされたデータ (ヘブライ語、キリル文字、中国語など) を送信しようとすると、Mojibakeの危険にさらされることになります。

于 2012-08-10T13:55:59.877 に答える
1

私は問題をよく理解していませんでしたが、これにより、ISO-8859-1 の代わりに UTF-8 を使用しているときに Mojibake を回避できました。

public class EncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        if (req.getCharacterEncoding() == null) {
            req.setCharacterEncoding("UTF-8");
        }
        chain.doFilter(req, resp);
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

奇妙なことに、このフィルターがないと、エンコーディングの種類を指定していないにもかかわらず、Mojibakes が得られました。また、init() メソッドの (filterConfig.getInitParameter("encoding")) が常に null を返すことにも気付きました。

于 2012-08-13T11:14:18.120 に答える