【发布时间】:2010-12-12 02:06:10
【问题描述】:
编辑:我硬编码了字符并使用repsonse writer来编写它,它仍然是 克尼斯堡
response.setCharacterEncoding("UTF-8"); response.setContentType(contentType); //if(contentType!=null)response.setHeader("Content-Type",contentType); Writer writer = response.getWriter();//new OutputStreamWriter(response.getOutputStream(),"UTF-8"); System.err.println("字符编码为"+response.getCharacterEncoding()); writer.write("柯尼斯堡"); writer.flush();编辑: 我在调用 getWriter() 之前尝试了 setContentType 和 setContentEncoding,输出仍然没有区别:
如果(res.length()> 0){ //pw.write(res); response.setCharacterEncoding("UTF-8"); response.setContentType(contentType); //if(contentType!=null)response.setHeader("Content-Type",contentType); Writer writer = response.getWriter();//new OutputStreamWriter(response.getOutputStream(),"UTF-8"); System.err.println("字符编码为"+response.getCharacterEncoding()); writer.write(res); writer.flush(); }我正在阅读一些德语字符,然后从 java servlet 以 xml 格式输出它们, 这是我用 UTF8 读取它们的方式:
国际长度=0; 字节[]缓冲区=新字节[1024]; 输出流 os = sock.getOutputStream(); InputStream 是 = sock.getInputStream(); 查询 += "\r\n"; os.write(query.getBytes("UTF8"));//iso8859_1")); 做{ len = is.read(buffer); 如果(长度> 0){ if(outstring==null)outstring=new StringBuffer(); outstring.append(new String(buffer,0,len, "UTF8")); } }while(len>0); System.out.println(outstring);System.out 正确输出字符串: 柯尼斯堡
但是,当我也使用 charset=UTF-8 从我的 servletResponse 重新传输此字符串时 它变得狼吞虎咽:K�nigsberger
private void outputResponse(String res, HttpServletRequest 请求, HttpServletResponse 响应)抛出 IOException { 字符串 outputFormat = getOutputFormat(request); 字符串内容类型=空; PrintWriter pw = response.getWriter(); //response.setCharacterEncoding("UTF-8"); System.err.println("输出"+res); 内容类型=“文本/xml;字符集=UTF-8”; res="" + res; if(contentType!=null)response.setHeader("Content-Type",contentType); 如果(res.length()> 0){ pw.write(res); } pw.flush(); }【问题讨论】:
-
指定操作系统/平台。什么是“repipe”以及如何“repipe”?
-
os 是窗口。通过 repipe 我只是指从 Servlet 输出它