`
dyllove98
  • 浏览: 1409521 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39189
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:80270
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:133389
社区版块
存档分类
最新评论

文件编码导致的sun.io.MalformedInputException异常

阅读更多
文件编码导致的sun.io.MalformedInputException异常
如果你没有使用ibm的jdk,却依然遇到了这个问题。
如果你的异常是在解析xml的时候出现的,如果你的异常是某些地方有某些地方没有。
例如tomcat里面没有,weblogic上有。抑或这个domain有那个domain却没有。而确实是同一个应用。
哪么你遇到的可能和笔者要讲的是同一个问题。

你的xml文件本身是UTF-8编码(注意是文件是UTF-8编码,不是xml文件里面指定的文件内容是UTF-8编码)?
你的xml文件里面含有中文?
你使用UltraEdit编辑xml文件?
删掉中文,问题依旧?

那么可以肯定你的问题就是笔者要讲的问题

首先给出解决方案:
方案一:
1.xml用记事本打开,删除里面的中文。
2.在windows 本地新建一个txt文件,用记事本(注意不能用UltraEdit)打开。
3.将xml里面的内容复制到新建的txt文件中。
4.将txt文件重名为xml文件的名称。覆盖原来的xml文件
5.看看问题是不是解决了,咔咔 神奇吧。

方案二:(适用于使用eclipse ide的程序员们,其他的能更改文件编码的程序也行,不过没测试过)
1.将xml文件的内容剪切出来,保存在别处,什么文件都行,最后是txt中。留下一个空的xml文件
2.将空的xml文件的编码修改成GBK。注意是文件的编码,不是xml的那个声明。当然这里已经删了。
3.这时候是否看到文件的头部有乱码? 删之!
4.将原来文件的内容烤回来
5.ok问题解决,这种方法不用删除中文。

问题的根源:
估计有些人已经明白是什么原因了。呵呵,那就是xml文件那个BOM的头导致的这个问题!
哦?还有没明白的?下面详细说明下:
xml文件分为两种,一种是有BOM信息的,它表示文件是xml格式
另外还有没有BOM信息的xml文件。
就是这个特殊的BOM信息导致了解析xml出错。
那跟UltraEdit有什么关系?UltraEdit在编辑xml文件的时候会自动加上这个可恶的BOM信息。
posted on 2008-05-21 22:22 落Nicety 阅读(3986) 评论(4)  编辑  收藏 所属分类: 基础 、调试相关


评论

# re: 文件编码导致的sun.io.MalformedInputException异常 2008-07-09 16:38 ironwan
能否修改代码来解决这个问题的?如果客户使用我们的系统时,让他们这么干他们肯定反对啊!  回复  更多评论
 

# re: 文件编码导致的sun.io.MalformedInputException异常 2008-07-09 18:35 落Nicety
@ironwan
这个问题的根源应该跟文件解析有关系
可以尝试 修改这些 不过难度比较大 我没有尝试过  回复  更多评论
 

# re: 文件编码导致的sun.io.MalformedInputException异常[未登录] 2009-04-12 17:47 ws
请问如果是由于是使用了IBM的JKD(本机),而跟程序不兼容怎么解决这个问题  回复  更多评论
 

# re: 文件编码导致的sun.io.MalformedInputException异常 2009-07-13 15:04 落Nicety
@ws
你这个是ibm jdk io的问题吧。
给jvm 增加参数-Dibm.stream.nio=true  回复  更多评论


是IBM的JDK啊,加一个执行参数-Dibm.stream.nio=true 看看
分享到:
评论

相关推荐

    异常sun.io.MalformedInputException处理

    标题中的“异常sun.io.MalformedInputException处理”是指在Java编程中遇到的一种特定错误,通常与字符编码问题有关。当程序尝试解码一个字节流时,如果字节流不符合预期的字符集格式,就会抛出这个异常。这可能发生...

    sun.io.CharToByteConverter支持类

    项目工程中用到jdk1.6相关方法,可以使用,但是升级到jdk1.8以后,编译出现java.lang.NoClassDefFoundError: sun/io/CharToByteConverter错误,后经查询,是jdk1.8版本中已经从sun.io.*中进行去除。网上找来了相关...

    sun.io class ByteToCharConverter

    ByteToCharConverter,SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.,ByteToCharConverter

    sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用已解决

    最近项目实验发现导入工具程序后项目有错,查看发现sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用,找不到相应的类。 二、原因分析 冲浪后发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中...

    com.sun.pdfview.PDFRenderer

    import com.sun.pdfview.FullScreenWindow;import com.sun.pdfview.OutlineNode;import com.sun.pdfview.PDFDestination;import com.sun.pdfview.PDFFile;import com.sun.pdfview.PDFObject;import ...

    sun.misc.BASE64Encoder源码及jar包

    在Java编程语言中,`sun.misc.BASE64Encoder`和`BASE64Decoder`是用于进行Base64编码和解码的内部类,它们属于`sun.misc`包,这是一个非公开(非标准)的Java库。`sun.misc`包中的类主要用于JVM内部使用,因此在官方...

    sun.misc.BASE64Decoder(Android Base64Jar包以及Java源代码)

    sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及...

    sun.misc.BASE64Encoder.jar包

    `sun.misc.BASE64Encoder`和`sun.misc.BASE64Decoder`就是这样的两个类,它们分别用于Base64编码和解码。 Base64是一种用于将二进制数据转换为可打印ASCII字符的编码方式,常用于在网络上传输二进制数据,如电子...

    sun.jdbc.odbc.JdbcOdbcDriver.zip

    在"压缩包子文件的文件名称列表"中,只有一个条目"jar",这可能意味着压缩包中仅包含一个JAR文件,即"sun.jdbc.odbc.JdbcOdbcDriver.jar"。 JDBC-ODBC桥的工作原理是:当Java应用程序使用JDBC API来连接数据库时,...

    sun0225SUN.github.io

    【压缩包子文件的文件名称列表】"sun0225SUN.github.io-master" 这个文件名表明这是项目的主分支,通常在GitHub上,"master"分支代表默认的开发分支。这个压缩包可能包含了以下内容: 1. **根目录文件**:可能包含`...

    sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;

    使用`sun.misc`包的风险在于,由于它是非公开的、未文档化的,因此Oracle有权在未来的Java版本中随时移除或更改这些类的行为,这可能导致代码在升级JDK后无法正常工作。此外,依赖私有包违反了Java的模块化原则,...

    com.sun.media.jai等文件转换jar

    主页:http://java.sun.com/javase/6/docs/technotes/guides/imageio/index.html JAI 中的 Image I/O Tools,支持更多图片类型,例如JPEG-LS, JPEG2000, 和 TIFF。 主页:https://jai-imageio.dev.java.net/。JAI ...

    com.sun.rowset.jar.zip

    本文将深入探讨`com.sun.rowset.jar.zip`这个压缩包中的`com.sun.rowset.jar`文件,揭示RowSet在处理数据库数据方面的强大功能。 RowSet,全称JDBC RowSet,是一种基于JDBC的数据容器,它是ResultSet接口的一个子类...

    sun.misc.BASE64Encoder 加密源码+完整包.rar

    在Java编程语言中,`sun.misc.BASE64Encoder` 和 `sun.misc.BASE64Decoder` 是两个用于Base64编码和解码的内部类,它们位于`sun.misc`包下。Base64是一种用于在网络上传输二进制数据的文本编码方式,它将任意的字节...

    com.sun.jndi.ldap.jar

    在Java开发中,`com.sun.jndi.ldap.jar`是一个重要的库文件,它包含了Java Naming and Directory Interface (JNDI) 的 LDAP(Lightweight Directory Access Protocol)实现。JNDI是一个接口,提供了一种标准的方式来...

    import com.sun.image.codec.jpeg.JPEGImageEncoder;包的下载

    import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt....

    sun.jdbc.odbc.jdbcodbcdriver-Maven.zip

    在压缩包文件名称列表中,只有一个文件名"sun.jdbc.odbc.jdbcodbcdriver",这通常是一个Java类文件,包含了JDBC-ODBC桥接驱动的实现。在Java的早期版本中,这个类位于`sun.jdbc.odbc`包下,可以直接通过Class.for...

    sun.misc.base64decoder.jar下载

    sun.misc.BASE64Encoder找不到jar包的解决方法? 在MyEclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示:  Access restriction: The type BASE64Decoder is not ...

    com.sun.crypto.provider.SunJCE

    【标题】"com.sun.crypto.provider.SunJCE" 是Java加密技术中一个关键的组件,它属于Oracle JDK的内置安全提供者。这个组件在描述中提到的问题是关于类`com.sun.crypto.provider.SunJCE`的加载问题,该类在某些特定...

    tesseract识别中文的com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam下载

    在Java项目中,如果缺少这个库,程序在尝试写入或处理TIFF图像时就会抛出异常,导致代码无法正常运行。 为了解决这个问题,你可以通过以下步骤来添加`jai_imageio-1.1-alpha.jar`到你的项目: 1. 首先,你需要找到...

Global site tag (gtag.js) - Google Analytics