0

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

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

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

    return sbAscii.toString();
}

一切都按预期工作,直到我的字节包含类似于“Nick\xe2\x80\x99s Stuff”的内容。我对专家的问题是:如何修改我的方法,以便 sbAscii.toString() 返回“Nick's Stuff”而不是“Nick(strange symbols)s Stuff”?非常感谢任何输入。

4

3 回答 3

1

使用字符串方法

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

或者这个方法

String value = new String(byteArray, 0, byteArray.length, "UTF-8");
于 2013-10-02T02:32:10.297 回答
0

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

于 2013-10-02T02:29:24.390 回答
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);
}
于 2013-10-02T02:34:53.893 回答