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>

Request要在Eclipse中调试(和打印)a ,您需要确保使用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 回答