0

我有一个 Java servlet,它通过 HTTP GET 请求从上游系统接收数据。此请求包括一个名为“text”的参数和另一个名为“charset”的参数,指示文本参数的编码方式:

如果我指示上游系统向我发送文本并调试 servlet 请求参数,我会看到以下内容:

request.getParameter("charset") == "UTF-16LE"
request.getParameter("text").getBytes() == [0, 84, 1, 0]

此字符串中两个字符的代码点(十六进制)是:

[T]  0054
[Ā]  0100

我无法弄清楚如何将其转换byte[]回 String "TĀ"。我应该提一下,我并不完全信任charset并怀疑它可能正在使用UTF-16BE.

4

2 回答 2

6

使用String(byteArray, charset)构造函数:

byte[] bytes = { 0, 84, 1, 0 };
String string = new String(bytes, "UTF-16BE");
于 2012-06-19T16:17:20.210 回答
0

你为什么要调用 getBytes() 呢?您已经将参数作为字符串。在不指定字符集的情况下调用 getBytes() 只是一个破坏数据的机会。

于 2012-06-19T22:35:13.670 回答