【发布时间】:2015-12-29 12:03:17
【问题描述】:
我正在尝试使用 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;
}
}
这显示了完全相同的结果。问题可能出在我的表格上吗?
【问题讨论】:
-
如果你用
new String((byte[])request..., "UTF-8);代替(String)...怎么办? -
取一小串说一个字母。将其字符转储为整数(十六进制)值。并从那里开始整个轨迹。如果您对页面和表单数据正确使用 UTF-8,则控制台可能会错误地将字符串(内部 Unicode)转换为 Latin-1,并将不可转换的字符表示为问号控制台无关,转储为十六进制以获取信息。对数据库进行相同的检查。
-
您的 jsp 文件使用哪种编码方式? Tomcat 和其他应用程序服务器将使用基于底层平台的编码(静态 servlet 将使用此默认编码,但您可以在自己的 servlet 或 Tomcat 的 web.xml 文件(默认 servlet 使用)中更改它)
-
@JoopEggen 好吧,我尝试从 post 请求中获取希伯来语信息并将 char 信息打印为十进制,例如对于字母
א它显示 224 这是字符à和不是原来的性格。会不会是我的表格有问题?