我试图修改一些使用httpExchange
对象的服务器代码来处理服务器对客户端的响应。
我的问题是,对于包含iso-8859-1不支持的字符的回复,例如中文字符,我会得到像' ????'代替人物。我想将响应的编码设置为utf-8,但到目前为止还没有成功。
我尝试添加此行:
httpExchange.getResponseHeaders().put("charset", Arrays.asList("UTF-8"));
这成功地将#34; charset"响应中的标题,但我仍然无法在响应中发送我想要的字符。
如何设置响应的编码以允许这些字符?
答案 0 :(得分:7)
使用Content-Type
标头指定编码。
String encoding = "UTF-8";
httpExchange.getResponseHeaders().set("Content-Type", "text/html; charset=" + encoding);
Writer out = new OutputStreamWriter(httpExchange.getResponseBody(), encoding));
out.write(something);