如何更正 post 查询的更改编码?

How to correct change encoding of post query?

当我在服务器端不使用 setCharacterEncoding 将 post 发送到我的页面时,我得到 фыв。使用 setCharacterEncoding(UTF-8),我得到 ыва。如何更正 POST 查询的更改字符编码?

P.S.: 我从ServletInputStream读取数据。

下面的代码。

doPost
req.setCharacterEncoding("UTF-8");
BufferedReader r = new BufferedReader(new InputStreamReader(req.getInputStream()));
String line;
while ((line = r.readLine()) != null) {
    System.out.println(line);
}
BufferedReader r = new BufferedReader(
    new InputStreamReader(req.getInputStream(), StandardCharsets.UTF_8));

使用 getInputStream 可以得到没有编码的二进制数据。因此,二进制到文本的桥接 class InputStreamReader 需要正确的编码。否则它使用系统默认值 System.getProperty("file.encoding").