MyEclipse 有关中文乱码问题解决方法

来源:互联网 发布:好scratch编程 编辑:程序博客网 时间:2024/06/10 09:13

本文以 utf-8 为例

  • IDE 设置:

  1. Windows->Preferances ->General->Content Types->Text ->Default encoding: 填入 utf-8, 设置源文件及工程各种类型文件本身的编码。设定后Text下面的子类型大部分都随之改变,如css、html、java,但JSP还是默认以前的编码,需要进一步单独修改为utf-8
  2. Windows->Preferances ->General->Workspace->Text file encoding  在othe中选择utf-8,这是设置源文件本身的存储编码。
  3. Windows->Preferances ->Genaral->Editors->Text Editors->Spelling >> Encoding  这是拼写检查字典所用的编码,可不管。
  4. Windows->Preferances ->Files and Editors 这里可以设置各种类型源文件的编码,如JSP ->Encoding 设置为:ISO 10646/Unicode(UTF-8),这个和2的作用应该一样,可能是为了兼容Eclipse的选项。Eclipse 对应选项为 Preferances->web
  • 项目设置:

右键单击项目->Properties->Resource->Text file encoding :这个默认的是上面IDE-2中所设置。如果默认不是UTF-8,则要点击Other进行选择。也可以对某个具体文件进行右键修改操作。

        代码

  • JSP页面中显示的编码

<%@ page language="java" pageEncoding="utf-8"%><%@ page contentType="text/html;charset=utf-8"%><meta http-equiv="Content-Type" content="text/html charset=utf-8">
  1. 第一行 pageEncoding="UTF-8" 是指JSP页面存储时的编码。
  2. 第二行 charset=utf-8 指JSP页面输入输出使用的编码,也就是解码所用格式,如果不指定就用默认的iso8859-1。很多服务器在没有找到pageEncoding时,将charset代替pageEncoding
  3. 第三行 charset=utf-8 指定浏览器的解码方式,如果前面指定编码一致且无误,这里可以不设置,如果没有第二行,则需要设置此编码。

         如果表单输入是中文,提交的时候,doPost 处理函数中 request.getParameter("xxx") 取得的可能是乱码,解决方法有两种:

  1. JSP头部加上
    <%request.setCharacterEncoding("utf-8");%>
  2. request.getParameter("xxx") 前面加一句 setCharacterEncoding,即
public  void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String name = request.getParamete("name");// .....}

         另外注意:MyEclipse (我用的是 2017 stable 1)新建HTML时,如果选择HTML5 ,无论怎么设置编码,中文还是会乱码。自动生成的 Meta如下:

<meta name="keywords" content="keyword1,keyword2,keyword3"><meta name="description" content="this is my page"><meta name="content-type" content="text/html; charset=UTF-8">
解决方法是将 name 改为 http-equiv. 可以只修改第三行。


另外有两篇博文可以参考: http://peter8015.iteye.com/blog/1954379     

                       http://www.cnblogs.com/chengkai/articles/2171848.html