Java 在URLConnection类中处理UTF-8字符

Java 在URLConnection类中处理UTF-8字符,java,utf-8,Java,Utf 8,所以我这里有个问题,我发现很难解决 我这里有一个方法,它向url发送字符串请求并读回响应。 这工作完全正常。但现在我收到的响应包含UTF-8编码字符,我无法正确读取 请求: <Request> <requestId>1071977</requestId> <datas> <parameter> <id>CATEGORY</id> <value>ALL</v

所以我这里有个问题,我发现很难解决

我这里有一个方法,它向url发送字符串请求并读回响应。 这工作完全正常。但现在我收到的响应包含UTF-8编码字符,我无法正确读取

请求:

<Request>
  <requestId>1071977</requestId>
  <datas>
    <parameter>
      <id>CATEGORY</id>
      <value>ALL</value>
    </parameter>
  </datas>
</Request>
我知道我可以用像这样的东西

ByteBuffer bb = StandardCharsets.UTF_8.encode(utfstring);
String normalString = StandardCharsets.UTF_8.decode(bb).toString();
在java中读取
utf-8
字符串,但我不确定在读取
URLConnection
类的响应时如何执行相同的操作。如果你能帮忙,我将不胜感激。谢谢。

通过
read()
分别对每个字节进行加密,并将其作为字符处理,可以将多字节字符打断

我将整个
InputStream
读入
字节[]
(),然后使用

new String(yourByteArray, "UTF-8");

或者,您可以保留循环,但不要附加
char
s,而是填充您自己的
byte[]

我希望您不要认为您的示例使用
标准字符集.UTF_8.encode/decode
会更改
字符串的编码,因为它不会更改。这基本上与执行
x+=1相同;x-=1
,即no op。将读取内容包装到新的BufferedReader(新的InputStreamReader(url.openStream(),“UTF-8”)?这应该可以解决您的问题UTF-8是字符编码,而不是字符集。因此,“UTF-8字符”没有意义。这种想法会让您误入歧途。请参阅@f1sh。
ByteBuffer bb = StandardCharsets.UTF_8.encode(utfstring);
String normalString = StandardCharsets.UTF_8.decode(bb).toString();
new String(yourByteArray, "UTF-8");