1

我正在扩展基于 Struts2 的现有代码(和 Struts2-jquery 插件,但我认为这不是问题的原因)。

我在 Internet Explorer 9 中发现了一个奇怪的行为(我不知道以前版本的 IE 是否也存在同样的问题),它没有出现在 FireFox 中。

我有一个带有一些输入字段的页面和一个用于在服务器上上传文件的上传功能。当用户上传文件时,通过表单提交将其发送到服务器,然后 Action 返回同一页面(重新加载页面)。如果我使用重音字母填充输入框,则在提交表单后重新加载页面时,会出现“正方形”而不是重音字母(它是�)。这只发生在 IE 中,而不是在 FireFox 中(我在提交之前的字符保持不变)。

web.xmlandstruts.xml文件中,没有 JSP 的编码配置。

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<s:form id="actionForm" name="actionForm"
    theme="simple" cssClass="yform"
    action="changeAction" acceptcharset="UTF-8">
    <table>
        <tr>
            <td>field1</td>
            <td>
                <s:textfield id="field1" name="field1" maxlength="2048" value="%{field1}" disabled="false" size="98" required="true" />
            </td>
        </tr>
        <tr>
            <td><s:file name="docFacFileUploaded" size="50" /></td>
            <td>
                <sj:submit targets="main_section" id="uploadFileButton" value="File upload" button="true" indicator="indLoad" />
                <img id="indLoad" src="indicator.gif" alt="Loading..." style="display:none" />
            </td>
        <tr>
        </tr>
            <td>field2</td>
            <td>
                <s:textfield id="field2" name="field2" maxlength="2048" value="%{field2}" disabled="false" size="98" required="true" />
            </td>
        </tr>
        <tr>
            <td>
                <sj:submit targets="main_section" id="salvaButton" value="Salva" button="true" indicator="ind" />
                <img id="ind" src="indicator.gif" alt="Loading..." style="display:none" />
            </td>
        </tr>
    </table>
</s:form>
4

3 回答 3

0

可能您使用的字符编码与浏览器设置的字符编码不同。例如,UTF-8 unicode 与 ISO-8859-1 有一些区别。外国网站更糟糕。通常浏览器可以自动检测到它,但它似乎并不总是有效。

转到视图菜单>字符编码并尝试那里的选项,直到找到正确显示的选项。

<%page contentType="text/html" pageEncoding="UTF-8"%>

或者

header('Content-Type: text/html; charset=UTF-8'); 
于 2013-02-04T10:25:38.587 回答
0

我在 URL https://forums.oracle.com/forums/thread.jspa?messageID=3151892的 OTN 论坛中找到了解决方案

如建议的那样,我已将其添加到web.xml

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

这是我的 JSP 页面

<jsp:directive.page contentType="text/html;charset=utf-8"/>

所以它在 IE 和 FF 中是正确的。

于 2013-02-04T11:43:19.927 回答
0

您需要character set在 Web 应用程序的整个操作链中保留相同的内容,从从客户端发送请求并从服务器接收请求,到从服务器发送响应并从客户端接收响应。

使用web.xml 中的编码,除了服务器接收方法的请求(您需要配置应用程序服务器连接器以供它们使用)UTF-8之外,您将可以执行每个步骤;GETUTF-8

请注意,您的数据库也应该是UTF-8,而不是(正如我在意大利的许多情况下看到的那样)WE81ISO8859P1,也不P15...

UTF-8 有你需要的一切,只要在任何地方使用它,你就会没事的。

作为重要说明,请记住始终指定字符集

  • 创造新StringsByte Arrays

    代替new String(myByteArray);

    采用new String(myByteArray,"UTF-8");

  • 当从 获得Byte ArraysStrings

    代替myString.getBytes();

    采用myString.getBytes("UTF-8");

于 2013-02-04T13:14:04.320 回答