Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用umlauts和其他特殊字符处理URL

使用umlauts和其他特殊字符处理URL
EN

Stack Overflow用户
提问于 2013-03-19 00:36:20
回答 2查看 4.1K关注 0票数 2

我有以下网址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://mantis.server.company/download/test/0022450-umlauts_öä_üüü_and_special_chars_%&$#.pdf

以前无法对字符串进行编码。我只需处理这个字符串(我知道它不是有效的URL字符串),以便打开该路径后面的文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String url = "https://mantis-daun.server.company/download/test/0022450-umlauts_öä_üüü_and_special_chars_%&$#.pdf";

try {
    url = URLDecoder.decode(url, "UTF-8");
    URL myConnection = new URL(url);
    URLConnection connectMe = myConnection.openConnection();
    // Only for error processing
    HttpURLConnection httpConn = (HttpURLConnection) connectMe;
    InputStream is;
    if (httpConn.getResponseCode() >= 400) {
        is = httpConn.getErrorStream();
    } else {
        is = httpConn.getInputStream();
    }
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = rd.readLine()) != null)
        {
            System.out.println("-----" + line);
        }
        rd.close();     
    InputStream in = connectMe.getInputStream();
    BufferedInputStream bin = new BufferedInputStream(in);
    byte[] buffer = new byte[(int)connectMe.getContentLength()];
    int fi = 0;
    while(fi<buffer.length) {
        fi = fi + bin.read(buffer, fi, buffer.length - fi);
    }
    bin.close();
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

通过这种方法,我得到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "&$"
    at java.net.URLDecoder.decode(URLDecoder.java:173)
    at org.mssql.main.MSSQLAccess.main(MSSQLAccess.java:34)

关于url = url.replaceAll("%", "%25");,我得到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-----<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-----<html><head>
-----<title>400 Bad Request</title>
-----</head><body>
-----<h1>Bad Request</h1>
-----<p>Your browser sent a request that this server could not understand.<br />
-----</p>
-----<hr>
java.io.IOException: Server returned HTTP response code: 400 for URL: https://mantis-daun.server.company/download/test/0022450-umlauts_öä_üüü_and_special_chars_%&$#.pdf
-----<address>Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny16 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8o Server at mantis-daun.server.company Port 443</address>
-----</body></html>
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1491)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1485)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1139)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
    at org.mssql.main.MSSQLAccess.main(MSSQLAccess.java:51)
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://mantis-daun.server.company/download/test/0022450-umlauts_öä_üüü_and_special_chars_%&$#.pdf
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318)
at org.mssql.main.MSSQLAccess.main(MSSQLAccess.java:39)

如果我想在普通浏览器中打开"URL“,我也会得到一个"400:坏请求”。

那么,是否有一种方法来处理带有umlauts和特殊字符的字符串,以便它可以作为"URL“使用?

也许服务器设置也有问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-19 00:45:02

首先,正如Xavjer所指出的,您需要对URL进行编码。接下来,拆分URL并只对路径的“文本”部分进行编码是有意义的。域名没有编码(如果您有非拉丁域名,则必须按照Punycode进行编码),还必须保留路径分隔符(当您对URL进行整体编码时,情况并非如此)。因此,您只对“下载”、“测试”和filename+extension部件进行编码。

票数 0
EN

Stack Overflow用户

发布于 2013-03-19 00:40:54

好吧,您尝试解码url,但是实际上应该对进行编码,以满足您的需要。它实际上崩溃了,因为它试图解码%&$,这是无效的十六进制符号.

编码将导致: https%3A%2F%2Fmantis-daun.server.company%2Fdownload%2Ftest%2F0022450-umlauts_%C3%B6%C3%A4_%C3%BC%C3%BC%C3%BC_and_special_chars_%25%26%24%23.pdf

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15494718

复制
相关文章
iOS中url的特殊字符转换
一般来说我们调用webVIew的时候,只要给webVIew传一个url,在网页里面就可以显示网页信息。但是当我们传的url比较麻烦或者带文字符,带参数的时候我们需要对特殊字符进行转义。我们还可以用遍历,正则等来把特殊字符给替换掉!!
好派笔记
2021/10/29
3.1K0
iOS:URL 特殊字符 # UTF-8
1.URL 加载过程中,出现汉字乱码 ---- NSString* urlstr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 2.链接中包含特殊字符,1方法,会导致特殊字符也进行转码,所以用以下方法 ---- self.url = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorD
菜菜不吃蔡
2019/03/06
1.2K0
jquery特殊字符问题处理
问题:今天项目上有个地方使用 $(“#lamp”).load(‘/admin/checklogin.php?sid=’+sid); 这样传递的时候遇到空格就直接参数就丢失 后经查询资料发现可以使
苦咖啡
2018/05/07
2.9K0
Oracle|字符串特殊处理
某需求表环节处理人字段存储的是用户的工号,由于有多人的情况,所以该表在数据存储时是以英文逗号分开存储的。
Java小技巧
2022/05/23
1.4K0
Oracle|字符串特殊处理
java 对于表情和特殊字符的转码解码处理
转码然后插入到DB当中 String encodestr=URLEncoder.encode("需要转码的内容", "utf-8") 将encodestr插入数据库中 解码然后显示到页面当中 String decodestr=URLDecoder.decode("需要解码的内容", "utf-8") 在页面展示decodestr
用户4191150
2021/08/12
3.8K1
iPhone开发中使用的特殊URL
在iPhone中,可以直接用UIApp打开URL地址。如下所示: [ UIApp openURL: [ NSURL URLWithString:@"http://www.apple.com" ] ];
EltonZheng
2021/01/26
6290
BashShell常量和特殊字符
其中,base 是一个 2 到 64 的十进制数值,表示数字的基数;n 是在 base 基数中的数字的值。如果忽略 base# ,则默认以 10 为基数。n 中的每一位数如果大于 9,则依次以小写字母、大写字母、@、_ 表示(最大表示到十进制中的 63,因为 base 最大为 64)。
hotarugali
2022/02/28
5.6K0
如何处理 Feed 中特殊字符
今天 Dreamcolor 告诉我火星在 WordPress Dashboard 后台不更新了。我到火星页面看了下,都有更新啊。然后查看了下生成的聚合 Feed,发现只显示前面两条,感觉应该是聚合的 Feed 中出现了特殊字符的问题,然后去验证下 Feed,发现真的是特殊字符的问题。
Denis
2023/04/13
9350
LaTeX特殊字符和符号
无论什么字体,LaTeX以一个反勾号或重音符(`)当做左引号,以一个正勾号或直立引号(')当做右引号。
hotarugali
2022/03/17
6.2K0
LaTeX特殊字符和符号
url参数存在特殊字符(“ & @)报错怎么替换:URL中的参数编码梳理
网址URL中特殊字符转义编码 字符 - URL编码值 空格 - %20 " - %22 # - %23 % - %25 & - %26 ( - %28 ) - %29 + - %2B ,
陈哈哈
2020/07/06
5.5K0
url参数存在特殊字符(“ & @)报错怎么替换:URL中的参数编码梳理
(20)Bash通配符和其他特殊符号
首先我们先给name赋一个值,'$name'将会原封不动输出单引号里的内容,"$name"则会输出赋值后的结果。
生信real
2020/08/26
1.3K0
前端处理动态 url 和 pushStatus 的使用
起因是这样的,在尝试前后端分离的这条道路上,我自己也在不断摸索,感觉要把大部分的坑都踩踩了。目前我用的技术是:
零式的天空
2022/03/22
1.3K0
故障分析 | 密码使用特殊字符
最近在使用脚本新建了一批应用用户,发现一个奇怪的问题,有部分用户存下以下问题:应用使用该密码能正常访问,但使用 mysql 客户端登录手动输入密码无法登录。经过与正常用户对比发现存在登录异常的用户使用了特殊字符"$"。
爱可生开源社区
2022/10/11
2.2K0
如何处理Shell脚本中的特殊字符
有时,当我们编写 shell 脚本时,我们必须处理特殊字符,如空格、符号和其他非 ASCII 字符。这些字符可能无法直接由 shell 脚本和其他工具处理。因此,我们必须采取一些措施来处理这些特殊字符。
IT运维技术圈
2022/12/26
7.9K0
mybatis like 模糊查询 特殊字符报错 转义处理
<if test="projectName!=null and projectName!=''"> <bind name="projectName_" value="'%'+projectName+'%'"/> AND info.name like #{projectName_} </if>
qubianzhong
2018/08/02
2K0
URL处理----拼接和编码
        前几天想爬取一个用户网站自动创建每个用户的资料方便注册一些账号,想写一个通用点的爬虫程序爬取只要配置一些爬取规则、爬取深度就ok,避免代码改动,由于时间关系只完成的个半成品,后面在考虑是用xml文件作为配置文件,还是简单的使用.ini文件,后者虽然简单但局限性太大,所以,,,偷几天懒顺便重新考虑下逻辑。
py3study
2020/01/19
1.4K0
Shell特殊字符
shell既是类Unix操作系统的命令解析器,用于解释执行用户输入的一连串命令,它类似于DOS下的command和后来Windows的cmd.exe。同时shell也是一种程序设计语言。作为命令解释型的脚本语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它预定义了各种环境变量,保留了一些关键字以及一些特殊字符的含义,并提供了许多在高级语言中才具有的控制结构,包括循环和分支判断。
恋喵大鲤鱼
2018/08/03
5.2K0
点击加载更多

相似问题

WP7 Umlauts和特殊字符

12

无法显示特殊字符(umlauts)

10

处理lua文件路径中的特殊字符(umlauts)

24

MPMediaQuery:搜索时查找Umlauts和特殊字符

12

使用带有& char和其他特殊字符的url

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文