相关疑难解决方法(0)

如何正确解码传递给servlet的unicode参数

假设我有:

<a href="http://www.yahoo.com/" target="_yahoo" 
    title="Yahoo!&#8482;" onclick="return gateway(this);">Yahoo!</a>
<script type="text/javascript">
function gateway(lnk) {
    window.open(SERVLET +
        '?external_link=' + encodeURIComponent(lnk.href) +
        '&external_target=' + encodeURIComponent(lnk.target) +
        '&external_title=' + encodeURIComponent(lnk.title));
    return false;
}
</script>
Run Code Online (Sandbox Code Playgroud)

我已经确认external_title将编码Yahoo!%E2%84%A2并传递给SERVLET.如果SERVLET我在做:

Writer writer = response.getWriter();
writer.write(request.getParameter("external_title"));
Run Code Online (Sandbox Code Playgroud)

我在浏览器中获得了Yahoo!¢.如果我手动将浏览器字符编码切换为UTF-8,它将更改为Yahoo! TM(这就是我想要的).

所以我认为我发送到浏览器的编码是错误的(确实如此Content-type: text/html; charset=ISO-8859-1).我改为SERVLET:

response.setContentType("text/html; charset=utf-8");
Writer writer = response.getWriter();
writer.write(request.getParameter("external_title"));
Run Code Online (Sandbox Code Playgroud)

现在浏览器字符编码是UTF-8,但它输出Yahoo!但我无法让浏览器呈现正确的字符.

我的问题是:是否存在某些组合Content-type和/或new String(request.getParameter("external_title").getBytes(), "UTF-8");和/或其他会导致Yahoo! TM出现在SERVLET输出中?

java unicode servlets

36
推荐指数
3
解决办法
9万
查看次数

如何将Unicode字符作为JSP/Servlet request.getParameter传递?

经过大量的反复试验,我仍然无法弄清楚问题.JSP,servlet和数据库都被设置为接受UTF-8编码,但即使我在任何具有任何双字节字符的东西上使用request.getParameter,如em dash,它们也会被破坏为字符.

我已经手动提交数据库,它能够接受这些字符,没问题.如果我从servlet中的数据库中提取文本并将其打印在我的jsp页面的表单中,则显示没有问题.

唯一一次,当我尝试在使用request.getParameter检索它之后尝试将其显示在其他地方时,它发现它作为已损坏的字符返回.

有没有其他人有这个问题?我该如何解决?

unicode jsp servlets character-encoding mojibake

14
推荐指数
1
解决办法
8126
查看次数

在Tomcat上处理URI中的字符编码

在我试图帮助的网站上,用户可以在浏览器中输入一个URL,如下面的汉字,

  http://localhost:8080?a=??
Run Code Online (Sandbox Code Playgroud)

在服务器上,我们得到

  GET /a=%E6%B5%8B%E8%AF%95 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

如您所见,它是UTF-8编码,然后是URL编码.我们可以通过在Tomcat中将编码设置为UTF-8来正确处理.

但是,有时我们在某些浏览器上获得Latin1编码,

  http://localhost:8080?a=ß
Run Code Online (Sandbox Code Playgroud)

变成

  GET /a=%DF HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

无论如何在Tomcat中正确处理这个问题?看起来服务器必须做一些智能猜测.我们不希望100%正确处理Latin1,但是假设一切都是UTF-8,那么任何东西都比我们现在做的要好.

服务器是Tomcat 5.5.支持的浏览器是iPhone 6 +,Firefox 2+和iPhone上的Safari.

java encoding tomcat servlets internationalization

12
推荐指数
1
解决办法
1万
查看次数

Java servlet sendRequest - getParameter编码问题

我正在使用java servlet为我的课程构建一个Web应用程序.在某些时候,我想重定向到一个jsp页面,发送一些想要在那里使用的信息(使用GET方法).在我的servlet中,我有以下代码:

String link = new String("index.jsp?name="+metadata.getName()+"&title="+metadata.getTitle());

response.sendRedirect(response.encodeRedirectURL(link));
Run Code Online (Sandbox Code Playgroud)

在jsp中,我使用了这些参数

<%
request.getParameter("name");
request.getParameter("title");
%>
Run Code Online (Sandbox Code Playgroud)

一切正常,除非参数不包含拉丁字符(在我的情况下,它们可以包含希腊字符).例如,如果name =ΕΡΕΥΝΑΣ我得到名字=¡¥.如何解决此编码问题(将其设置为UTF-8)?是不是encodeRedirectURL()做这个工作?我应该在某个时候使用encodeURL()吗?我尝试了最后一个,但问题仍然存在.

提前致谢 :)

java encoding servlets character-encoding getparameter

3
推荐指数
1
解决办法
6712
查看次数

eclipse与tomcat部署 - 当项目在eclipse中运行时,导出的war(部分)失败

我在eclipse juno中有一个webapp - 当我在服务器上运行时运行正常 - 在eclipse的浏览器(我在Windows上)或在FF中.

右键单击> 导出war >将其转储到$ CATALINA_HOME/webapps>一切正常(解压缩好了)EXCEPT

  • 我的自定义标签 - 我有一个WEB-INF\functions.tld显然没有读过的文件.自动生成的eclipse server.xml(在Servers项目中)和默认的Tomcat 之间的唯一区别server.xml是:

    <Context docBase="ted2012" path="/ted2012" 
    reloadable="true"source="org.eclipse.jst.jee.server:ted2012"/>
    
    Run Code Online (Sandbox Code Playgroud)

source是WTP特定属性.
我设法解决了 - 看我的答案

  • Tomcat无法正确获取Url - 请参阅我的回答中的图片.

问题:

  1. (未解决)为什么Tomcat没有正确解码Url - 而eclipse呢?失败在哪里?有关调用堆栈的详细信息以及tomcat失败的位置,请参阅我的具体问题
  2. 为什么tomcat在eclipse第一时间没有看到tld?为什么我要编辑web.xml?(在我的回答中解决,应该是另一个问题)

代码在github中 - 在文件INSTRUCTIONS.txt中有详细的说明来设置项目并重现我在下面的答案中描绘的错误.

Tomcat 7.0.32,eclipse 4.2,java 1.7.9

eclipse unicode tomcat java-ee servlet-3.0

3
推荐指数
1
解决办法
1312
查看次数

在JSP中,如何使用utf8编码获取GET参数?

我正在使用GlassFish 4,我的JSP文件很简单:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%= request.getParameter("a") %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的要求GET index.jsp?a=??,输出是:

åå² 
Run Code Online (Sandbox Code Playgroud)

它出什么问题了?

encoding jsp utf-8

0
推荐指数
1
解决办法
4027
查看次数