Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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
Java 读取UTF8文件并与字符串进行比较_Java_Utf 8_Utf 16 - Fatal编程技术网

Java 读取UTF8文件并与字符串进行比较

Java 读取UTF8文件并与字符串进行比较,java,utf-8,utf-16,Java,Utf 8,Utf 16,我试图读取一个UTF8文本文件,然后与equals()进行文本比较,结果应返回true。但它没有,因为getBytes()返回不同的值 这是一个简单的例子: public static void main(String[] args) throws Exception { System.out.println(Charset.defaultCharset()); // UTF-8 InputStream is = new FileInputStream("./myUTF8File.txt

我试图读取一个UTF8文本文件,然后与equals()进行文本比较,结果应返回true。但它没有,因为getBytes()返回不同的值

这是一个简单的例子:

public static void main(String[] args) throws Exception {
  System.out.println(Charset.defaultCharset()); // UTF-8
  InputStream is = new FileInputStream("./myUTF8File.txt");
  BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF8"));
  String line;
  while ((line = in.readLine()) != null) {
    System.out.print(line); // mouseover
    byte[] bytes = line.getBytes(); // [-17, -69, -65, 109, 111, 117, 115, 101, 111, 118, 101, 114]
    String str = "mouseover";
    byte[] bytesStr = str.getBytes(); // [109, 111, 117, 115, 101, 111, 118, 101, 114]
    if (line.equals(str)) { // false
      System.out.println("equal");
    }
  }
}

我希望字符串在第.readLine()行转换为UTF-16,并且等于返回true。不知道为什么

文件的开始字节:

-17, -69, -65
的字节数。。。数据的某些相关性:

[-17, -69, -65, 109, 111, 117, 115, 101, 111, 118, 101, 114]
               [109, 111, 117, 115, 101, 111, 118, 101, 114]
此外,字符集的正确名称是“UTF-8”——请注意破折号

BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));

文件的起始字节:

-17, -69, -65
的字节数。。。数据的某些相关性:

[-17, -69, -65, 109, 111, 117, 115, 101, 111, 118, 101, 114]
               [109, 111, 117, 115, 101, 111, 118, 101, 114]
此外,字符集的正确名称是“UTF-8”——请注意破折号

BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));

文件的起始字节:

-17, -69, -65
的字节数。。。数据的某些相关性:

[-17, -69, -65, 109, 111, 117, 115, 101, 111, 118, 101, 114]
               [109, 111, 117, 115, 101, 111, 118, 101, 114]
此外,字符集的正确名称是“UTF-8”——请注意破折号

BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));

文件的起始字节:

-17, -69, -65
的字节数。。。数据的某些相关性:

[-17, -69, -65, 109, 111, 117, 115, 101, 111, 118, 101, 114]
               [109, 111, 117, 115, 101, 111, 118, 101, 114]
此外,字符集的正确名称是“UTF-8”——请注意破折号

BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));

另外:不要像这样使用
getBytes()
,它使用的是平台默认编码,这是一个非常糟糕的主意(大多数时候)。另外:不要像这样使用
getBytes()
它使用的是平台默认编码,这是一个非常糟糕的主意(大多数时候)。另外:不要像这样使用
getBytes()
,它使用平台默认编码,这是一个非常糟糕的想法(大多数时候)。另外:不要像这样使用
getBytes()
,它使用平台默认编码,这是一个非常糟糕的想法(大多数时候)。考虑到这一点,我发现了一个类似的线程@Chris,这在这里有什么帮助?OP不想处理字节[],只想处理字符串。正确的字符集声明可以解决这个问题……不,正确的字符集声明没有帮助。我使用了一个类似版本的“checkForUtf8BOMAndDiscardIfAny”方法使其工作。考虑到这一点,我发现了一个类似的线程@Chris,这在这里有什么帮助?OP不想处理字节[],只想处理字符串。正确的字符集声明可以解决这个问题……不,正确的字符集声明没有帮助。我使用了一个类似版本的“checkForUtf8BOMAndDiscardIfAny”方法使其工作。考虑到这一点,我发现了一个类似的线程@Chris,这在这里有什么帮助?OP不想处理字节[],只想处理字符串。正确的字符集声明可以解决这个问题……不,正确的字符集声明没有帮助。我使用了一个类似版本的“checkForUtf8BOMAndDiscardIfAny”方法使其工作。考虑到这一点,我发现了一个类似的线程@Chris,这在这里有什么帮助?OP不想处理字节[],只想处理字符串。正确的字符集声明可以解决这个问题……不,正确的字符集声明没有帮助。我使用了一个类似版本的“checkforutf8bomanddowlifany”方法使其工作。