使用StringBuilder将包含多个编码的byte []转换为String

时间:2013-10-02 02:25:41

标签: java string byte

我有一个byte []数组,其中包含我想要转换为String的数据。我目前只是使用StringBuilder并使用以下代码将字节转换为char:

String getAscii(int offset, int count) {
    sbAscii.setLength(0);

    for (getAsciiCounter = 0; getAsciiCounter < count; getAsciiCounter++) {
        sbAscii.append((char) bytes[offset + getAsciiCounter]);
    }

    return sbAscii.toString();
}

一切都按预期工作,直到我的字节包含类似于&#34; Nick \ xe2 \ x80 \ x99s Stuff&#34;的内容。我向专家提出的问题是:我如何修改我的方法,以便sbAscii.toString()返回&#34; Nick's Stuff&#34;而不是&#34;尼克(奇怪的符号)s Stuff&#34;?任何意见都非常感谢。

3 个答案:

答案 0 :(得分:1)

使用this字符串方法

byte[] byteArray = new byte[] 
            { 78, 105, 99, 107, 39, 115, 32, 83, 116, 117, 102, 102 };
String value = new String(byteArray, "UTF-8");

this方法

String value = new String(byteArray, 0, byteArray.length, "UTF-8");

答案 1 :(得分:0)

您应该只需要new String(bytes,offset,count)

答案 2 :(得分:0)

import  java.nio.charset.Charset;

...

public String convertFromASCII(byte[] strBuf, int offset, int count)
{
    Charset asciiCharset = Charset.forName("US-ASCII");
    return new String(strBuf, offset, count, asciiCharset);
}