BufferedWriter中的非英文字母

时间:2016-04-27 19:45:40

标签: java http bufferedwriter

我用Java编写了一个简单的HTTP服务器。我将数据返回到浏览器时遇到问题。

这写了一个返回的内容:

this.writer = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream(), Charset.forName("UTF-8").newEncoder()));
...
writer.write(this.getResponseLine() + "\n");
writer.write("Content-Type: " + this.contentType + "; charset=utf-8\n");
writer.write("Content-Length: " + this.body.length() + "\n");
writer.write("\r\n");
writer.write(new String(this.body.getBytes(), "UTF-8"));
writer.flush();
writer.flush();

方法 this.body.getBytes()返回“Witajświecie”,但是在浏览器中只有“Witajświeci”(缺少最后一个字母)。

问题出在哪里?

1 个答案:

答案 0 :(得分:4)

我的猜测是:this.body.length()字符计数,而不是字节数。如果有一个UTF8字符,Content-Length标题将太小一个字节,让浏览器在HTTP消息体实际结束之前停止从套接字读取。