JSP编码器问题在QueryString中发送俄语字符时

时间:2013-08-20 14:59:27

标签: java jsp encoding

我有两个jsp页面。我想添加“俄语”语言。俄语字符在jsp页面上完美显示,但是当我尝试将此值从参数发送到另一个jsp页面时,然后在第二个jsp页面中将此值更改为不同的字符。这个问题只出现在俄语中,而不是意大利语和法语等其他问题。

例如

  On demo.jsp page  the russian character  "приветствие"  is shown correctly. 
 but when I try to send it to another page  "test.jsp"  then some unknown 
 characters are shown like "!C<Cä5 Cô>CôCC´OD=Cä5!"

代码: demo.jsp

String welcometext=langP.get("welcome");

<jsp:include page="<%=test.jsp%>">
<jsp:param name="wlc" value="<%=Encode.hex8Code(welcometext)%>" />
</jsp:include>  

在test.jsp

String title = Encode.utfToUnicode(Decode.hex8Decode(request.getParameter("wlc")));
System.out.println(" Russial welcome test "+welcome);

在查询参数中发送它们时,我们需要为俄罗斯添加任何特殊代码吗?

请注意*以下代码已经写好,否则它会给法语和意大利语带来问题..

<%@ page contentType="text/html; charset=UTF-8" %>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">   

还尝试了以下但没有帮助!

request.setCharacterEncoding("UTF-8")

2 个答案:

答案 0 :(得分:0)

尝试将<% request.setCharacterEncoding("UTF-8"); %>添加到您的主jsp页面:

以下是我的例子:

demo.jsp

<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Привет</h1>
        <jsp:include page="/test.jsp" flush="true">
            <jsp:param name="wlc" value="Привет"/>
        </jsp:include>  
    </body>
</html>

test.jsp的

<h1>Param values is</h1>
    <%
        String hello = request.getParameter("wlc");
        out.print(hello);
    %>

答案 1 :(得分:0)

我不知道更好的解决方案,但以下代码解决了这个问题。我将变量保存在session属性中。

demo.jsp

   session.setAttribute("welcometext", welcometext);

test.jsp的

   String welcometest=(String)  session.getAttribute("welcometext");