Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更正post查询的编码更改?_Java_Tomcat_Post_Encoding_Character Encoding - Fatal编程技术网

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

Java 如何更正post查询的编码更改?,java,tomcat,post,encoding,character-encoding,Java,Tomcat,Post,Encoding,Character Encoding,当我在服务器端不使用setCharacterEncoding发送帖子到我的页面时,我会得到ССèèП。通过setCharacterEncoding(UTF-8),我得到了Сèèèèèèèè°。如何正确更改POST查询的字符编码 注意:我从ServletInputStream读取数据 代码如下 doPost req.setCharacterEncoding("UTF-8"); BufferedReader r = new BufferedReader(new InputStreamReader(r

当我在服务器端不使用setCharacterEncoding发送帖子到我的页面时,我会得到
ССèèП
。通过
setCharacterEncoding(UTF-8)
,我得到了
Сèèèèèèèè°
。如何正确更改POST查询的字符编码

注意:我从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);
}

使用getInputStream,您可以获得不带编码的二进制数据。因此,二进制到文本桥接类InputStreamReader需要正确的编码。否则,它使用系统默认的
system.getProperty(“file.encoding”)

工作。谢谢。但如果我直接从流中读取?使用
ServletInputStream.readLine
函数。然后
String line=新字符串(字节、关闭、结果、标准字符集.UTF_8)
BufferedReader r = new BufferedReader(
    new InputStreamReader(req.getInputStream(), StandardCharsets.UTF_8));