4

アクセント付きの文字 [áéíóúÁÉÍÓÚ] をフォームで収集しようとしていますが、アクションに正しく送信されません:

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
[. . .]
<s:form action="resultRot" method="post" theme="simple">
<s:textfield name="param" theme="simple" size="20" maxlength="20" style="text-transform: uppercase; text-align:center"/>
<s:submit name="submit" key="ejercicios.roturaPalabras.corregir" align="center"/>

アクション クラスでパラメーター param を選択すると、正しい値が含まれていません。私はEclipseを使用しており、プロジェクトのエンコーディングがISO-8859-1であることを確認しました

私もUTF-8エンコーディングを試しました(私のjspで):

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

URLDecoder/Encoder も試してみました:

String prueba = java.net.URLDecoder.decode(solucionIntroducida, "ISO-8859-1"); 

前もって感謝します。

4

1 に答える 1

7

ベスト プラクティスは、UTF-8あらゆる場所で使用することです。

ここでは、アプリケーションサーバーのコネクタを変更することでそれを行う方法を見つけることができますが、他の部分については、それぞれで単純に指定するかJSP(あなたが行っているように)、 で一度指定することができますweb.xml:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

Eclipseでa をデバッグ (および印刷) するRequestには、テキスト ファイル エンコーディングとして使用していることを確認する必要があります。UTF-8

Preferences-> General-> Workspace->に移動しText file encoding、設定しますOther: UTF-8

コードでは、String を Byte[] に、またはその逆に変換するときに、必ず文字エンコーディングを指定してください。

String str = new String(myByteArray,"UTF-8");

byte[] ba = myString.toByteArray("UTF-8");

これは、どこでも正しい文字を保持するために必要な手順です。

于 2013-07-15T08:02:43.500 に答える