繁体   English   中英

BufferedWriter中的非英语字母

[英]Non-english letter in 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”(缺少最后一个字母)。

问题出在哪儿?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM