jdk 1.3中的java unicode编码文件读取问题

| 我在黑莓平台上使用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)
谢谢     
已邀请:
您的“ 2”文件缺少字节顺序标记。 在JDK 1.3中,如果使用
UTF-16
,则字节顺序标记是必需的。如果您事先知道字节序,请尝试4ѭ或
-BE
。 (BOM在1.4.2及更高版本中不是必需的。) 当然,如果您的文件根本不是“ 3”,请使用正确的编码。请参阅上面的字符编码链接。除了少数核心编码外,所支持的实际编码是由实现定义的,因此您需要检查文档以了解特定的JDK。 文件所采用的编码应该在文件的
<xml>
标头中,例如:
<?xml version=\"1.0\" encoding=\"THIS IS THE ENCODING YOU NEED TO USE\"?>
如果文件采用单字符编码或“ 9”(没有BOM表),则可以尝试以纯“ 10”读取第一行,该文件不应包含该范围之外的任何数据。解析编码字段,然后使用推导的编码重新打开文件。 仅在您的平台明显支持实际编码的情况下,这才起作用。 顺便说一句:JDK 1.3是古老的。您确定这是您的版本吗? (除了BOM表部分,无论如何都不会改变问题)     
试试这个代码:
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(path),\"Windows-1256\"));
br.readLine();
    

要回复问题请先登录注册