我有一个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;?任何意见都非常感谢。
答案 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);
}