我把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 可能的解决方法相关推荐

  1. java url no protocol_httpurlconnection 新人使用遇到错误java.net.MalformedURLException: no protocol...

    自己在琢磨中:publicclasshttpurl{  publicstaticvoidmain(String[]args) {       try{URLurl=newURL("www.s ...

  2. java.net.MalformedURLException: unknown protocol: c 这个错一般有两种原因导致: 1、URL协议、格式或者路径错误,...

    java.net.MalformedURLException: unknown protocol: c这个错一般有两种原因导致:1.URL协议.格式或者路径错误, 好好检查下你程序中的代码如果是路径问 ...

  3. Unity 报错之 java.net.MalformedURLException: unknown protocol

    使用WWW获取信息时Android端报错:java.net.MalformedURLException: unknown protocol:报错网址 报错截图: 报错原因:访问的网址不正确,若是多打一 ...

  4. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.m ...

  5. Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法

    Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法 下载网络上的Adobe flash cs5 精简版(绿色版),Java运行时环境初始化时出现错误,你可能需要重装Flash ...

  6. java开发中遇到的问题及解决方法(持续更新)

    java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...

  7. Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法

    Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法 参考文章: (1)An ...

  8. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法

    Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法 参考文章: (1)Idea运行web项目时,提示j ...

  9. java.net.BindException: Address already in use: 解决方法

    java.net.BindException: Address already in use: 解决方法 参考文章: (1)java.net.BindException: Address alread ...

最新文章

  1. 2022-2028年中国EMI膜产业发展态势及市场发展策略报告
  2. Cmake 实例学习 一
  3. matlab函数 size()函数和waterfal()l函数,三维图形,矩阵
  4. stl-map/set
  5. 14_python基础—匿名函数lambda表达式
  6. SQLServer优化资料整理(二)
  7. linux matconvnet编译,Windows/Linux平台下编译安装MatConvNet
  8. PLM基础概述(解决方案架构师认证:PLM基础) | 达索系统百世慧
  9. Linux下修改MAC值
  10. IPD数字诀(一二三四五六七八九十)
  11. 开学送礼最佳选择,有名的蓝牙耳机推荐
  12. android手表怎样刷机,碉堡了!智能手表也能一键刷机
  13. bzoj3786 星系探索(ETT)
  14. 购买弹性云服务器怎么部署网站,购买后怎么部署自己的云服务器
  15. monkey自动化测试脚本
  16. 【纯干货】Vue仿蘑菇街商城项目(vue+koa+mongodb)
  17. 单片机的分频是什么意思?
  18. 痞子衡嵌入式:ARM Cortex-M文件那些事(4)- 可重定向文件(.o/.a)
  19. 金融工程知识学习——限价单、止损单、市价单
  20. PyhontPygame 飞船大战外星人 完整代码及资源下载

热门文章

  1. 太阳系哪些星球上有水,含水量最大的星球是哪一颗?
  2. JavaScript---js实现从本地上传图片
  3. kubernetes 【组件】ingress 如何通过域名访问您的应用
  4. Improving Knowledge-aware Recommendation with Multi-levelInteractive Contrastive Learning
  5. 20. 有效的括号-C语言
  6. 同洲转型难重生 进军手机市场再度折戟
  7. matlab转换为exe文件,matlab GUI编程及转换为独立运行的exe文件
  8. 多线程爬取wallhaven
  9. leetcode 三个数相加得零 快速夹逼法
  10. Powershell创建文件