jsp - 使用unicode(希伯来字母)的请求未正确显示

时间:2015-12-29 12:03:18

标签: java jsp unicode hebrew

我正在尝试使用jsp通过post传递一个表单,其中的数据用希伯来字母填充。

我不知道如何修复它。我只想让文本正常显示。我的代码:(代码在一个名为newgame.jsp的jsp文件中)

<form id="creategame" action="newgame.jsp" method="post">
    //Form containing a bunch of inputs which can have hebrew outputs
</form>

我接受了输入:

<%
if(request.getParameter("gamename")!=null){
    String gameName = (String)request.getParameter("gamename");
    String minKita = (String)request.getParameter("minkita");
    String maxKita = (String)request.getParameter("maxkita");
    String gameDesc = (String)request.getParameter("gamedesc");
    String gameZiood = (String)request.getParameter("gameziood");
    System.out.println(gameName+" - "+minKita+" - "+maxKita+" - "+gameDesc+" - "+gameZiood);
    //Upload it to the database...
    response.sendRedirect("gamesdb.jsp");
}
%>

基本上:

  

אבגדהוזחטיכלמנסעפצקרשת在控制台中变为??????????????????????,在数据库/网站中变为àáâãäåæçèéëìîðñòôö÷øùú但是,在“问号”的控制台中打印字符数据后,我发现它实际上是àáâãäåæçèéëìîðñòôö÷øùú而不仅仅是一堆问号。

那么我如何在我的帖子请求中传递数据,以便它保留为原始文本?

提前致谢,NonameSL。

编辑:我正在使用编码windows-1255我知道正确显示希伯来字母。

编辑2:我尝试使用以下内容:

public String toHebrewString(Object o){
        try{
            return new String(((byte[])o), "UTF-8");
        }catch(Exception unexpected){
            return (String)o;
        }
    }

显示出完全相同的结果。问题可能出在我的身上吗?

1 个答案:

答案 0 :(得分:1)

看到String "א"包含一个整数值为224的char,出现以下错误:

  • Windows上的希伯来语单字节编码为 Windows-1255 (byte)224א

  • 由于String / char应该以Unicode格式保存文本,因此字节到String的转换出错了。

  • 检查:

    request.setCharacterEncoding("Windows-1255"); // Once at request begin
    String gameName = request.getParameter("gamename");
    ...
    

    但是,您不希望重复处理每个返回的表单。

  • 解决方案:如果这是纯希伯来语网站,您可以使用Windows-1255,但编码 UTF-8 的完整Unicode更常见。如何使用UTF-8表单呈现HTML,从表单数据中接受UTF-8等等,可以在互联网上找到。

响应编码也是如此。和数据库一样,等等。