在Servlet的response输出时,若输出的内容是UTF-8编码,则应设置
response.setContentType("text/html;charset=UTF-8");
也就是说必须指定contentType,Web Server才能按正确的编码输出内容。。。
然后再response.getWriter().write(e.getMessage());
但是response.getOutputStream().print依然有乱码,因为outputstream是输出流,并不对编码进行处理。。
而getWriter则有对编码进行再处理。。。
/* get encoding from Content-Type header */
String encoding = getCharacterEncoding();
if (encoding==null && _servletHttpRequest!=null)
{
/* implementation of educated defaults */
String mimeType = _httpResponse.getMimeType();
encoding = _servletHttpRequest.getServletHandler()
.getHttpContext().getEncodingByMimeType(mimeType);
}
if (encoding==null)
// get last resort hardcoded default
encoding = StringUtil.__ISO_8859_1;
上面内容是Jetty的getWriter一个实现。。默认下使用的编码是iso-8859-1
转自:http://hi.baidu.com/wadise/blog/item/771fa8ecd1d0112263d09fed.html
分享到:
相关推荐
这将强制 Response 的输出流使用 GB2312 编码方式,并且告诉浏览器使用 GB2312 编码方式来解码响应内容。 response.setLocale(new java.util.Locale("zh","CN")) 第三个方法是使用 `setLocale` 方法来设置 ...
1. 首先,我们设置Response流的编码为GB2312,这是中国国家标准的编码方式。 2. 其次,我们追加了Content-Disposition头信息,规定了响应的文件名和类型。 3. 然后,我们将DataTable对象转换为HTML表格,并将其写入...
在处理包含中文字符的文件名时,由于编码不一致或处理不当,可能会导致文件名显示为乱码。 首先,我们需要理解乱码产生的原因。通常,乱码出现是由于字符编码的不匹配,比如在服务器端和客户端之间,或者在HTTP请求...
通常,我们使用`getWriter()`获取`PrintWriter`来输出HTML、JSON等文本内容: ```java PrintWriter writer = response.getWriter(); writer.println("<h1>Hello, World!</h1>"); writer.close(); ``` 七、示例代码 ...
在***中,Response对象用于向客户端发送响应,这里使用了Response对象的Write方法来输出WML格式的字符串。 在代码示例中,首先设置了HTTP响应的内容类型(ContentType)为"text/vnd.wap.wml",这告诉浏览器当前响应...
- **编码问题:** 在设置文件名时,`new String(zipName.getBytes())`可能会遇到乱码问题,建议使用如`URLEncoder.encode(zipName, "UTF-8")`来避免此类问题。 - **资源释放:** 输入输出流必须妥善关闭,防止资源...
例如,当使用`Response.Redirect()`或`Response.Write()`等方法时,框架会自动处理URL编码,无需手动编码。 - 在MVC中,路由系统能够自动解码URL并将其映射到相应的控制器和动作,但开发者仍需注意在模型绑定和查询...
JSP页面默认可能使用ISO-8859-1编码,但可以通过`response.setCharacterEncoding(String charset)`设置适当的字符集,如UTF-8,以确保正确处理非ASCII字符。 7. **写入响应体** `response.getWriter()`返回一个`...
在给出的代码片段中,`Server.UrlEncode`方法被调用后,其结果被赋值给了变量`a`,然后使用`Response.Write`输出了编码后的结果。紧接着,`URLDecode`函数被调用来解码`a`中的字符串,其结果同样通过`Response.Write...
2. **使用PrintWriter替换OutputStream**:如果你需要输出文本,优先考虑使用`getWriter()`,因为它更方便地处理字符编码和文本格式。 3. **使用缓冲区**:如果你需要交替输出文本和二进制数据,可以先将所有数据...
4. **输出流编码设置问题**:在Servlet中使用`PrintWriter`或`OutputStream`输出数据时,如果没有正确地设置输出流的字符编码,同样会导致乱码。 #### 三、解决方案详解 根据以上分析,我们可以通过以下步骤来解决...
- **Web 配置文件**:为了确保输出的编码与预期一致,在 `web.config` 文件中指定 `responseEncoding` 属性非常关键。 - 当 `web.config` 设置为 `gb2312` 时,无需使用 `Server.UrlEncode`。 - 当 `web.config` ...
处理response响应,设置公共的编码并直接输出到浏览器。
在设置了响应的字符编码之后,才能通过response.getWriter()获取到可以正确处理UTF-8编码的PrintWriter对象,进而输出包含中文的JS代码。 四、实践示例 在给出的部分内容中,可以看到Servlet处理了来自JSP页面的...
`response.getOutputStream()` 方法是Servlet API的一部分,它用于获取与HTTP响应关联的输出流对象。这个方法在服务器端处理请求时非常常见,尤其在构建动态网页时。 当我们处理一个HTTP请求时,服务器会创建一个`...
因此,编码过滤器的目的是确保所有的输入和输出都使用一致的字符编码。 JavaWeb中的Filter接口是实现编码过滤的关键。Filter是Servlet API的一部分,可以拦截HTTP请求和响应,进行预处理和后处理。在创建编码过滤器...
pageEncoding 的作用还包括在 JSP 中不指定 contentType 属性,也不使用 response.setCharacterEncoding 方法指定编码方式时,服务器响应的编码方式以及浏览器的编程方式。 2. contentType="text/html;charset=UTF-...
charset=UTF-8" %>`这样的指令指定输出内容的编码格式。 - 需要在JSP页面头部指定正确的编码格式,例如`; charset=UTF-8">`。 - **Servlet 中的编码问题**: - 在Servlet中处理请求时,可以使用`request.set...
例如,`request.setCharacterEncoding()`用于处理请求的输入数据,`response.setCharacterEncoding()`用于设置响应的输出数据的编码。 5. `setContentType()`:`response.setContentType()`用于设置HTTP响应的MIME...
例如,可以修改HTTP头信息,编码方式,或者直接修改输出的HTML内容。 ```csharp public override void OnResultExecuted(ResultExecutedContext filterContext) { var response = filterContext.HttpContext....