JDK1.3中的java unicode编码文件读取问题
我正在为黑莓平台使用jdk1.3。现在,当我试图读取Unicode编码的xml文件时,我面临一个问题 我的代码:JDK1.3中的java unicode编码文件读取问题,java,Java,我正在为黑莓平台使用jdk1.3。现在,当我试图读取Unicode编码的xml文件时,我面临一个问题 我的代码: java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(path),"UTF16")); br.readLine(); 错误: sun.io.MalformedInputException: Missing byt
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(path),"UTF16"));
br.readLine();
错误:
sun.io.MalformedInputException: Missing byte-order mark
at sun.io.ByteToCharUnicode.convert(ByteToCharUnicode.java:123)
at java.io.InputStreamReader.convertInto(InputStreamReader.java:137)
at java.io.InputStreamReader.fill(InputStreamReader.java:186)
at java.io.InputStreamReader.read(InputStreamReader.java:249)
at java.io.BufferedReader.fill(BufferedReader.java:139)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
谢谢您的
XML
文件缺少一个
在JDK1.3中,如果使用UTF-16
,则为字节顺序标记。如果您事先知道端点是什么,请尝试使用UTF16-LE
或-BE
(BOM在1.4.2及以上中不是强制性的。)
当然,如果您的文件根本不是UTF-16
,请使用正确的编码。请参见上面的字符编码链接。除了一小部分核心编码之外,支持的实际编码是实现定义的,因此您需要检查特定JDK的文档
文件的编码应该在文件的
头中,类似于:
<?xml version="1.0" encoding="THIS IS THE ENCODING YOU NEED TO USE"?>
如果文件采用单字符编码,或UTF-8
(无BOM),您可以尝试使用纯US-ASCII
读取第一行,它不应包含该范围以外的任何数据。解析编码字段,然后使用推导的编码重新打开文件
只有当您的平台支持实际编码时,这才有效
顺便说一句:JDK1.3很古老。你确定那是你的版本吗?(除BOM表零件外,不会对问题进行任何更改)请尝试以下代码:
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(path),"Windows-1256"));
br.readLine();
什么都不起作用。显示错误sun.io.malformedinputexception您确定文件以UTF-16开头吗?发布文件的hextump输出的第一行(带有
标题)和前几行。不,我不确定。文件“”中的某些行,但如何读取第一行。它在不读取任何内容的情况下显示错误。