[英]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.