Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JDK1.3中的java unicode编码文件读取问题_Java - Fatal编程技术网

JDK1.3中的java unicode编码文件读取问题

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

我正在为黑莓平台使用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 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输出的第一行(带有
标题)和前几行。不,我不确定。文件“”中的某些行,但如何读取第一行。它在不读取任何内容的情况下显示错误。