理解Java编码

理解Java编码,java,character-encoding,Java,Character Encoding,我试图确定,如果给定不同的编码,内部方法是否能够正确解码字节数组。下面的代码是如何生成要编码的数据的 public class Encoding { static byte[] VALUES = {(byte) 0x00, ..... (byte) 0xFF}; static String[] ENCODING = {"Windows-1252","ISO-8859-1"}; public static void main(String[] args) throws Unsupp

我试图确定,如果给定不同的编码,内部方法是否能够正确解码字节数组。下面的代码是如何生成要编码的数据的

public class Encoding {

  static byte[] VALUES = {(byte) 0x00, ..... (byte) 0xFF};
  static String[] ENCODING = {"Windows-1252","ISO-8859-1"};

  public static void main(String[] args) throws UnsupportedEncodingException {

    for(String encode : ENCODING) {
      for(byte value : VALUES) {
        byte[] inputByte = new byte[]{value};
        String input = new String(inputByte, encode);
        String houseInput = houseMethod(input.getBytes());
      }
    }
  }
}
我的问题是,当它调用house方法时,它将向该方法发送什么编码?我的理解是,当Java存储字符串时,它会将其转换为UTF-16。那么,当我发送Input.getBytes()时,它是发送UTF-16编码字节还是我在创建新字符串时设置的编码方案?我猜是UTF-16,但我不确定。房子的方法应该是

houseMethod(input.getBytes(encode))
请参阅String.getBytes():

使用平台的默认字符集将该字符串编码为字节序列,并将结果存储到新的字节数组中

建议您改用String.getBytes(Charset)方法,并显式指定所需的编码。

请参阅String.getBytes():

使用平台的默认字符集将该字符串编码为字节序列,并将结果存储到新的字节数组中

建议您改用String.getBytes(Charset)方法,并显式指定所需的编码。

根据
String.getBytes()

使用平台的 默认字符集,将结果存储到新的字节数组中

因此,内部方法获取的字节取决于您是哪个操作系统,以及您的语言环境设置

另外,
String.getBytes(encoding)
确保您获得作为参数传递的编码中的字节。

根据
String.getBytes()

使用平台的 默认字符集,将结果存储到新的字节数组中

因此,内部方法获取的字节取决于您是哪个操作系统,以及您的语言环境设置


另外,
String.getBytes(encoding)
确保您获得作为参数传递的编码中的字节。

字节没有编码;字符和字符串具有one@fantaghirocco错。请参阅defaultBytes vsutf8Bytes@fantaghirocco不,Java中的字符和字符串没有编码。您需要在字符/字符串和字节之间转换编码。@Laurentiu好的,我知道了,谢谢!!!:)字节没有编码;字符和字符串具有one@fantaghirocco错。请参阅defaultBytes vsutf8Bytes@fantaghirocco不,Java中的字符和字符串没有编码。您需要在字符/字符串和字节之间转换编码。@Laurentiu好的,我知道了,谢谢!!!:)