- 浏览: 650869 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (144)
- grails (2)
- jboss (2)
- html5 (2)
- maven (9)
- mysql (9)
- android (13)
- java (39)
- javascript (16)
- flex (3)
- oracle (7)
- ubuntu (5)
- tomcat (1)
- ssh (1)
- iphone (0)
- eclipse (5)
- jquery (4)
- web (7)
- ibatis (7)
- dwr (5)
- hibernate (1)
- ws (0)
- freemarker (4)
- css (2)
- webservice (1)
- html (2)
- jsp (4)
- os (5)
- xp (4)
- cpu (2)
- sql (5)
- db (2)
- 数据库 (5)
- log4j.properties (1)
- date (1)
- map (1)
- log4j (1)
- java spring dwr (1)
- (2)
- xml (4)
- ajax (3)
- servlet (1)
- xmlhttp (1)
- linux (2)
- socket (2)
- java,多线程 (1)
- android,java,os (1)
- Android,java (2)
- spring (1)
- java,dwr (1)
- js (2)
- 回调 (1)
- java,event (1)
- java ,注解, (1)
- avd (1)
- sdk (1)
- maven,java,xml,nexus (1)
- java,maven,nexus (1)
- Maven,Android,i-jetty,java (1)
- web js 参数 (1)
- java mac os (1)
- mac os (2)
- mac (1)
- 环境 (1)
- 搭建 (1)
- adt (1)
- adb (1)
- iOS (1)
最新评论
-
lhs472194266:
可以 X-Forwarded-For 可以轻易的被伪造
Java获取IP地址:request.getRemoteAddr()警惕 -
Nabulio:
图片全部加载不出来
maven 建立本地仓库 -
wahaha603:
...
Properties的相对路径以及文件的读取操作 -
一别梦心:
图片没了,楼主补充一下吧
maven 建立本地仓库 -
a_jie1981:
a_jie1981 写道试试http://www.findma ...
maven 建立本地仓库
用response得到输出流,即response.getOuptStream(); 返回值为ServletOutputStream 对象,即JSP的out对象,要么用response得到输出对象PrintWriter即response.getWriter()。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); response.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=utf-8"); pw.print("中文"); }
输出乱码。为什么呢,已经设置了字符编码啊?难道设置的无效。
在API中找到方法说明:
PrintWriter getWriter() throws IOException Returns a PrintWriter object that can send character text to the client. The PrintWriter uses the character encoding returned by getCharacterEncoding(). If the response's character encoding has not been specified as described in getCharacterEncoding (i.e., the method just returns the default value ISO-8859-1), getWriter updates it to ISO-8859-1.
就是讲,在返回一个PrintWriter对象的时候,charactor encoding就已经确定了,就已经设置好了字符集了。什么时候设置的呢? setCharacterEncoding方法的实现时发现如下代码:
public void setCharacterEncoding(String charset) { if (isCommitted()) return; // Ignore any call from an included servlet if (included) return; // Ignore any call made after the getWriter has been invoked // The default should be used if (usingWriter) return; coyoteResponse.setCharacterEncoding(charset); isCharacterEncodingSet = true; }
out.print("中文"); 结论: 1.在servlet中输出中文,如果采用PrintWriter方式,需要在调用getPrintWriter()之前调用setContentType 或者 setCharacterEncoding;采用ServletOutputStream方式,不受此限。 2.setContentType 和 setCharacterEncoding两方法中设定characterEncoding的方法对服务器效果一致,不需要反复调用。在输出文本内容时,采用response.setContentType("text/html; charset=utf-8");似乎更为方便。 3.PrintWriter自身并没有处理编码的职责,它还是应该看成一个装饰器比较好:它就是为了输出更方便而设计的,提供print、println、printf等便利方法。要设置编码的话,可以在它的底层Writer上设置:(这里以OutputStreamWriter为底层Writer),参考:
ServletOutputStream out = response.getOutputStream();
//情况1:正常,浏览器按utf-8方式查看
//response.setContentType("text/html; charset=utf-8");
//情况2:浏览器缺省按简体中文查看,手动设为utf-8方式查看正常
//response.setCharacterEncoding("utf-8");
说明:这种方式不仅不需要在调用getOutputStream()之前设定字符集,甚至在print输出后设定都有效。
new PrintWriter(new OutputStreamWriter(new FileOutputStream("yourfilepath"), "UTF-8"));
发表评论
-
android wifi 无线调试
2012-06-17 17:24 4404数据线丢了,不想花钱去买,在网上看了看,android手机 ... -
adb server is out of date. killing...
2012-06-17 17:20 8029在cmd窗口输入adb shell 或 adb connect ... -
JAVA 回调
2012-06-12 11:35 923熟悉MS-Windows和X Windows ... -
Class is not accessible due to restriction on required library
2012-06-03 12:13 992How to solve This error messag ... -
Column 'id' in field list is ambiguous
2012-04-23 18:20 7648Column 'id' in field list is am ... -
java.util.ConcurrentModificationException
2012-04-01 16:24 0工作中碰到个ConcurrentModificationExc ... -
在Spring框架下获取Bean的方式总结
2012-04-01 16:23 0众所周知,Spring框架将D ... -
普通Java类获取Spring的Bean的方法
2012-04-01 16:18 1313在SSH集成的前提下。某 ... -
android 调用系统图片浏览器并返回图片路径
2012-04-01 15:56 2516调用系统图片浏览器的方法如下: Intent intent ... -
网络编程中Nagle算法和Delayed ACK的测试
2012-03-31 16:43 1413Nagle算法 的立意是良 ... -
ibatis的remapResults属性合理运用
2012-03-31 15:51 1476Proper Usage of remapResults=&q ... -
response.setHeader()下载中文文件名的设置
2012-03-31 15:44 104051. HTTP消息头 (1)通用信息头 即能用于请求消息中 ... -
判断当前操作系统是不是window
2012-03-19 09:08 1590/** * 判断当前操作系统是不是window * * ... -
freemarker数字格式化
2012-03-17 16:53 3041freemarker在解析数据格式的时候,自动默认将数字按3为 ... -
数据库时客户端提示 Cannot proceed because system tables used by Event Scheduler
2012-02-29 21:13 9879在打开数据库或者用数据库管理工具(Navicat)时客户端提示 ... -
Socket用法详解
2012-02-22 16:49 1125一、构造Socket Socket的构造方法有以下几种重 ... -
在任意位置获取应用程序Context
2012-02-16 10:53 1025Android程序中访问资源时需要提供Context,一般来说 ... -
JAVA进程CPU占用率分析方法
2012-02-13 17:05 35771: 首先把JDK Linux版本上传到服务器上.2: 使 ... -
MYSQL索引优化和in or替换为union all
2012-02-07 17:08 1264使用UNION ALL代替OR,这不是绝对的。具体什么时候选择 ... -
dwr同步问题
2012-02-06 22:58 864想要异步的时候,想要同步的时候同步,在不同的情况下我们有不同的 ...
相关推荐
二、乱码问题分析 当Servlet需要输出JS代码,尤其是包含中文字符时,可能会遇到乱码问题。这主要是因为浏览器和服务器之间存在编码不一致的情况。在默认情况下,Servlet容器会使用ISO-8859-1编码来处理HTTP请求和...
根据以上分析,我们可以通过以下步骤来解决乱码问题: 1. **设置请求参数编码**: ```java request.setCharacterEncoding("utf-8"); ``` 这一行代码的作用是将请求的编码设置为UTF-8,确保所有的请求参数都按照...
### Struts乱码问题详解与解决方案 #### 一、引言 在Web开发过程中,特别是在使用Struts框架进行开发时,经常会遇到字符编码的问题,尤其是中文字符的乱码问题。本文将详细介绍Struts中常见的乱码现象,并提供具体...
4. **解决乱码问题**:通过设置响应输出流的字符集编码来避免乱码。 #### 三、具体实现细节 ##### 1. 封装`HttpServletRequest` - 实现`HttpServletRequestWrapper`子类,重写`getReader()`和`getInputStream()`...
Servlet 输出中文乱码的解决方法 在本文中,我们将讨论 Servlet 输出中文乱码的问题,并提供解决方法。首先,让我们了解一下问题的来源。在 Servlet 中,输出中文乱码的问题经常会出现,导致浏览器显示的中文字符...
在Ajax程序开发过程中,开发者经常会遇到一些问题,这些问题可能会对程序的执行和用户...通过上述的分析和解决方法,开发者可以更加高效地定位和解决在Ajax程序开发过程中遇到的问题,从而提高开发效率和程序的稳定性。
#### 四、解决Java JDBC操作中文字符乱码问题 **问题**:当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? **解答**: 1. **原因分析**:大多数JDBC驱动程序采用本地编码格式来...
- **控制器**:接收用户的请求,并调用相应的模型来处理请求,最终将结果返回给视图显示。 在数据库设计方面,主要包含用户表、商品表、订单表等,用于存储用户信息、商品详情以及订单记录等关键数据。这些表之间的...
对于中文乱码问题,常见的解决方案是在客户端使用encodeURI()函数对用户名进行两次编码,并在服务器端以UTF-8编码解析这些数据。这是因为网络传输中可能存在编码不一致导致乱码的问题。 在服务器端,通常会有一个...
* 解决中文乱码问题 * @param httpUrl * @return */ public static String downloadPage(String httpUrl) { StringBuffer pageBuffer = new StringBuffer(); URL pageUrl = null; try { pageUrl =...