java.net.MalformedURLException: no protocol 可能的解决方法
来源:互联网 发布:linux怎么建立文件 编辑:程序博客网 时间:2024/05/16 06:29
我把URL保存在编码为UTF-8的Txt文件中,然后读取里面的url字符串并创建JAVA.NET.URL对象.发现爆出java.net.MalformedURLException: no protocol
这样的错误. 这真的让我很烦恼.弄了好久也不见解决方法.
所以我就开始试验.
如图 url和url2没有什么区别. 但是从txt中复制的就报出错误,第二个直接从浏览器中复制的就没有问题, 这大概是我遇到的最奇怪的问题.
我新建一个String 变量把从第一个字符串复制给它.端倪就出现了.
复制给它后出现了一个 \uFEFF .(我去这什么鬼啊)
把它去掉再复制回去就没问题了. 所以可以肯定就是这东西搞的鬼.
去查资料后才发现原来:
在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识。
这个标识在Java读取文件的时候,不会被去掉,而且String.trim()也无法删除。如果用readLine()读取第一行存进String里面,这个String的length会比看到的大1,而且第一个字符就是这个BOM。
这种情况会造成一些麻烦,比如在读取ini文件的时候,如果想判断第一行是不是以“[”开头就无法正确判断。
幸好,Java在读取Unicode文件的时候,会统一把BOM变成“\uFEFF”,这样的话,就可以自己手动解决了(判断后,用substring()或replace()去除掉这个BOM): if(line.startsWith("\uFEFF")){ //line = line.substring(1); line = line.replace("\uFEFF", ""); }
什么是BOM?BOM = Byte Order MarkBOM是Unicode规范中推荐的标记字节顺序的方法。比如说对于UTF-16,如果接收者收到的BOM是FEFF,表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明“我是UTF-8编码”。BOM的UTF-8编码是EF BB BF(用UltraEdit打开文本、切换到16进制可以看到)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
所有的BOM在C/C++/Java中都被处理为"\uFEFF",参考:http://www.fileformat.info/info/unicode/char/feff/index.htm
Wikipedia关于POM的说明介绍:https://en.wikipedia.org/wiki/Byte_order_mark
出自:http://www.07net01.com/2015/07/888222.html
- java.net.MalformedURLException: no protocol 可能的解决方法
- java.net.MalformedURLException: no protocol解决方法
- java.net.MalformedURLException: no protocol
- java.net.MalformedURLException: no protocol
- java.net.MalformedURLException: no protocol
- 出现 java.net.MalformedURLException: no protocol 异常的原因及解决方法
- 出现 java.net.MalformedURLException: no protocol 异常的原因及解决方法
- java.net.MalformedURLException: no protocol: 解决方式
- 【exceptions】java.net.MalformedURLException: no protocol
- java.net.MalformedURLException: unknown protocol: ej解决方法
- Android java.net.MalformedURLException: no protocol: 解决方式
- java.net.MalformedURLException: no protocol: 通支发送失败
- 把字符串解析成xml的时候报错java.net.MalformedURLException: no protocol
- jsp 页面静态化 java.net.MalformedURLException: no protocol: index.jsp和java.net.MalformedURLException: unknown protocol: d
- Java(Eclipse)报出异常java.net.MalformedURLException: no protoco的l解决方法
- 关于华为smproxy_smgp.jar包的Cfg加载InfoX配置信息报java.net.MalformedURLException: no protocol:
- java.net.MalformedURLException: unknown protocol: c
- java.net.MalformedURLException: unknown protocol: g ; jdom2 ;
- 【HDU 2602】Bone Collector(01背包)
- SDKD 2016 Summer Single Contest #12 .G
- ImageNet Classification with Deep Convolutional Neural Networks
- 【POJ】-3253-Fence Repair(优先队列)
- 最大流dinic算法模板(链式前向星)
- java.net.MalformedURLException: no protocol 可能的解决方法
- Vultr 搭建pptpd
- robots.txt 简介
- muduo网络库学习笔记(0):面向对象编程风格和基于对象编程风格的比较
- 第十一章 消息队列管理
- IMX7的双核通信例子问题(rpmsg)
- HDU 1711 Number Sequence(kmp专题)
- HDU 5547 Sudoku(暴力)
- python 学习(五) While 循环语句