Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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 如何将字节数组转换为日语字符_Java_Arrays_String_Bytearray_Inputstream - Fatal编程技术网

Java 如何将字节数组转换为日语字符

Java 如何将字节数组转换为日语字符,java,arrays,string,bytearray,inputstream,Java,Arrays,String,Bytearray,Inputstream,一些工具正在以字节数组的形式向我发送日语内容 因此,使用java我必须读取字节数组并显示日语内容 我没有任何实现这一目标的想法 到目前为止,我尝试使用下面提到的程序只是为了检查这种转换是如何工作的: String s= "業界支出TXT_20150130170955"; byte b1[]; try { b1 = s.getBytes(); for (int j=0;j<b1.length; j++){ System.

一些工具正在以字节数组的形式向我发送日语内容

因此,使用java我必须读取字节数组并显示日语内容

我没有任何实现这一目标的想法

到目前为止,我尝试使用下面提到的程序只是为了检查这种转换是如何工作的:

String s= "業界支出TXT_20150130170955";
    byte b1[];
    try {
        b1 = s.getBytes();
        for (int j=0;j<b1.length; j++){
            System.out.println(b1[j]+"-----------"+(char)b1[1]);
        }
    } catch (UnsupportedEncodingException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    } 
但我们没有得到预期的结果
请建议

要将字节数组转换为
字符串
,您应该使用构造函数

要正确地将字节解码为字符序列,您必须知道用于解释字节的字符编码。最常见的是UTF-8

例如:

// Bytes of UTF-8 encoded Japanese word: "そこ" (there)
byte[] data = new byte[]{-29, -127, -99, -29, -127, -109};

String s = new String(data, StandardCharsets.UTF_8);
System.out.println(s);
// From String to byte array:
byte[] data = s.getBytes("UTF-8");

// From byte array to String:
String s = new String(data, "UTF-8");
输出:

そこ
请注意,可以使用
方法:

其中打印:

[-29, -127, -99, -29, -127, -109]
最后一个音符

避免使用只接受字节数组而不使用字符集的
String
构造函数,以及没有参数的
String.getBytes()
方法,因为将
String
转换为
byte[]
或其他方式需要编码;即使您没有指定编码,仍将使用一种编码:平台的默认编码可能因平台而异,甚至因运行而异,因此您的代码将变得不可移植(可能在不同的网络机器上工作)

适用于7.0之前的Java

如果使用7.0之前的Java,则可以使用构造函数和
getBytes()
方法,该方法将字符集作为
字符串而不是
字符集。您必须提供字符集的名称:

例如:

// Bytes of UTF-8 encoded Japanese word: "そこ" (there)
byte[] data = new byte[]{-29, -127, -99, -29, -127, -109};

String s = new String(data, StandardCharsets.UTF_8);
System.out.println(s);
// From String to byte array:
byte[] data = s.getBytes("UTF-8");

// From byte array to String:
String s = new String(data, "UTF-8");

类似的问题:你的解决方案解决了我一半的问题。但我仍然被另一个问题所困扰,即我将数据作为字节数组获取。那么,如何将字节数组转换为您使用以下命令获得的字节格式:-getBytes(StandardCharsets.UTF_8)@user3610891使用
getBytes()
方法将已创建的
字符串
对象转换为字节。如果您有字节数组,可以使用构造函数
字符串(byte[]bytes,Charset Charset)
从中创建
字符串
对象。您好@icza,谢谢您的帮助!只有Java1.7才支持StandardCharset,所以请您帮助我们在Java1.6v中获得相同的实现。再次感谢您的帮助。@user3610891如果您使用Java 1.6,您可以使用构造函数和
getBytes()
方法,该方法将字符集作为
字符串而不是
charset
。您必须提供字符集名称,例如
“UTF-8”
@user3610891 Edited my answer以添加链接和用法示例。