web开发时,字符编码及有时候也会是一个麻烦的问题,没有经验的话,肯定不知道怎么解决,有一定的经验的话,那还是比较简单的。以下,是我学习过程中总结出来的几种字符编码级问题和其解决的方法

  1.文档乱码,JAVA文件的乱码,如果是在系统中打开,那应该是因为你的JAVA文件的字符编码及和系统的字符编码及不一致,用带转换功能的编辑器转化一下就好了,比如Notepad++就是一个你轻便的工具,建议大家使用。如果在eclipse中打开,那么可能是ecplise的编码及和与文件的编码及不一致,一般eclipse的初始化编码及是和系统保持一致的,在window下即GBK,可以设置eclipse相应的编码及解决问题,以下演示eclipse中解决字符编码及问题

  控制台乱码,项目下右击--->Properties--->Resouce中设置编码级

  文件乱码, 文件下右击--->Properties--->Resouce中设置编码级

  有种简便的方法,更改eclipse的默认编码级配置

  window---->Preference---->General---->Content Types   就可以看见你要设置的哪种类型(后缀)文件的默认编码级了,如果需要设置 JAVA源文件 和 JSP文件的默认编码级, Text--->Java Source File  下方Default encoding栏设置你要设置的编码级,我们一般是 utf-8,同样 Text--->JSP  再设置你要设置的编码级,这样,在eclipse中生成的JAVA文件和JSP文件都是先前设置的好的编码级了。

  2.网页乱码,文档不乱码,出现这种情况,可能的原因比较分散,比如 jsp的文件头忘记写,请求响应字符编码及的设置,浏览器的编码级设置等等

  (1)当jsp文件头忘记写了,打开页面后,会出现类似阿拉伯文的乱码,我们只需添加头信息,设置编码及即可,例如

  <%@ page language="java" contentType="text/html; charset=utf-8"

  pageEncoding="utf-8"%>

  浏览器类似

  (2)请求响应字符编码及设置,其底层原理就是作用HTTP协议的头部信息中的编码级参数,在jsp提供的封装HTTP对象后,可以直接在request中设置请求的字符编码级,在response中设置响应的字符编码级

  解决post请求数据乱码

  request.setCharacterEncoding("utf-8");

  解决get请求数据乱码 

  修改tomcat服务器中的配制文件server.xml 中, 添加useBodyEncodingForURI="true"属性 --->URI统一资源标识符 URL统一资源定位符
  <Connector connectionTimeout="20000"
  port="8080"
  protocol="HTTP/1.1"
  redirectPort="8443"
  useBodyEncodingForURI="true"/>

   解决get 和 post 请求数据乱码 但并不是万能的

  new String (paramValue.getBytes("iso-8859-1"), "utf-8");

  响应设置字符编码及

  response.setCharacterEncoding("utf-8");
  response.setContentType("text/html; charset=utf-8");

  如果后期学习了过滤器,可以直接写一个编码级过滤器,把request和response的字符编码处理全部写好,就可以通用啦

  如果最后学习了spring 和 spring-mvc,可以直接在web.xml中配置过滤即可,需要web spring-mvc 的支持

JAVA的字符编码及问题的更多相关文章

  1. Java基础——字符编码

    一.ASII 美国(国家)信息交换标准(代)码. 计算机中只有数字,一切都是用数字表示,屏幕上显示的一个一个的字符也不例外. 一个字节可表示的数字为0-255,足以显示键盘上的所有的字符 例如. a ...

  2. java基础---->java中字符编码问题(一)

    这里面对java中的字符编码做一个总结,毕竟在项目中会经常遇到这个问题.爱不爱都可以,我怎样都依你,连借口我都帮你寻. 文件的编码格式 一.关于中文的二进制字节问题 public static Str ...

  3. JAVA支持字符编码读取文件

    文件操作,在java中很常用,对于存在特定编码的文件,则需要根据字符编码进行读取,要不容易出现乱码 /** * 读取文件 * @param filePath 文件路径 */ public static ...

  4. Java之字符编码和字符集

    什么是字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果.按照某种规则,将字符存储到计算机中,称为编码 .反之,将存储在计算 ...

  5. Java:字符编码

    常用的字符编码 UFT-8 ISO-8859-1 GBK/GBK2312

  6. Java中字符编码和字符串所占字节数 .

    首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~12 ...

  7. Java IO4:字符编码

    前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流,那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概 ...

  8. 基础篇:JAVA资源之IO、字符编码、URL和Spring.Resource

    目录 1 JAVA.IO字节流 2 JAVA.IO字符流 3 乱码问题和字符流 4 字符集和字符编码的概念区分 5 URI概念的简单介绍 6 URL概念及与URL的区别 7 Spring.Resour ...

  9. 深入理解Python的字符编码

    原文:http://lukejin.iteye.com/blog/598303 在处理中文的时候,我们有时候会碰到中文乱码的问题. 究其根本原因是正确的字节序列按照错误的编码方式解码成字符 或者正确的 ...

随机推荐

  1. PHP部分--文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤

    文件上传分为两个部分, HTML显示部分和PHP处理部分,HTML部分主要是让用户来选择所要上传的文件,然后通过PHP中的$_FILES,我们可以把文件上传到服务器的指定目录. 1.客户端页面 客户端 ...

  2. Android自定义控件系列(一)—Button七十二变

    转载请注明出处:http://www.cnblogs.com/landptf/p/6290791.html 忙了一段时间,终于有时间整理整理之前所用到的一些知识,分享给大家,希望给同学们有些帮助,同时 ...

  3. luogu P2580 于是他错误的点名开始了

    luogu  P2580 于是他错误的点名开始了 https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边 ...

  4. Base64加密与解密

    import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder; // 将 str进行 BASE64 编码 public static Stri ...

  5. PRML 第二章mindmap

    PRML第二章的Mindmap,这一章读的比较快,主要是很多计算和证明的过程都跳过了,感觉不是特别需要认真去看每一个公式,能够记住每个小节的结论.公式就可以了.当然有能力.有时间的人还是可以认真读的, ...

  6. CG 标准函数库

    (1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...

  7. C语言考试可能会涉及到的内容

    以下是汽院下属科院C(B)考试范围,C(A)的话,不考的内容应该都会涉及到,重点内容会延伸至三.四章. 一.教材上的两套自测题 二.C语言实验与实训教程 第一章.第二章.第三章.第四章的典型练习及解释 ...

  8. const 修饰成员函数体

    经过const修饰的变量表示不能被修改这个容易理解,例如 const int kInt = 0; // kInt 不能再被赋予其他值 const int getValue(const char *ke ...

  9. 运用PhantomJS测试JavaScript

    我认为我不需要说服你,测试你的JavaScript代码是一个好主意.但是,测试需要DOM操作的JavaScript代码有时候确是繁琐的.这意味着你需要在浏览器中测试代码而不能使用终端,对吗?错了,事实 ...

  10. spring-事务实现原理

    spring事务的实现原理:aop. aop的两种实现方式: 1.动态代理: 事务方法与调用方法不能在同一个类中,否则事务不生效.解决方案,自己注入自己(实质注入的是代理类). 实现方式:jdk动态代 ...