相关疑难解决方法(0)

解析Android上的查询字符串

Java EE具有ServletRequest.getParameterValues().

在非EE平台上,URL.getQuery()只返回一个字符串.

什么是正确分析查询字符串中当URL以正常的方式不是基于Java EE?


< rant >

在尝试制作自己的解析器的答案中很受欢迎.这是一个非常有趣和令人兴奋的微编码项目,但我不能说这是一个好主意 :(

下面的代码片段通常有缺陷或破损,顺便说一下.打破它们对读者来说是一个有趣的练习. 并且黑客攻击使用它们的网站.

解析查询字符串是一个定义明确的问题,但阅读规范和理解细微差别并非易事.让一些平台库编码器做出艰苦的工作,并为您做好修复,这要好得多!

< / rant >

java url parsing android

269
推荐指数
9
解决办法
16万
查看次数

如何正确解码传递给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万
查看次数

标签 统计

java ×2

android ×1

parsing ×1

servlets ×1

unicode ×1

url ×1