我正在尝试使用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;
}
}
显示出完全相同的结果。问题可能出在我的身上吗?
答案 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等等,可以在互联网上找到。
响应编码也是如此。和数据库一样,等等。