中文乱码的问题

11 篇文章 0 订阅

解决中文乱码的问题

在Servlet中经常会遇到中文乱码的问题,在这里,对常见的中文乱码的情况进行汇总。一般的,出现中文乱码的场合有显示Servlet页面,request对象的获取请求参数,Servlet输出响应以及数据库交互等,另外,出现乱码主要是因为字符集编码的问题。

字符集的介绍

ASCLL码

这是最早的字符集,它使用一个字节中的7位来表示一个字符,经过组合,总共可以表示128个字符,后来IBM使用一个字节有8位的空间,把ASCLL改为由8位表示的一个字符,这样可以表示258个字符,其他的字符是在ASCLL码的表示的基础下提出来的。

gb2312

gb2312是针对我国的汉字的一套编码标准,他是最在提出来的处理汉字信息交换的编码标准,这种编码采用双字节来表示一个中文字符,总共最多能表示65536个字符。

GBK

这是对gb2312的补充,是可以向上兼容的(使用gb2312也可以在GBK编码标准下正确显示)

UNICODE

这个编码的诞生是为了统一的全球编码,它是通用多8位编码字符集的简称,支持世界上超过650种语言的国际字符集。UNICODE始终允许在同一服务器上混合使用不同的语言组的不同的语言。UNICODE始终使用16进制的数字,而且在书写时,在前面加上”U+”.例如,字母A的编码为004116,所以字母A的编码为”U+004116”

UTF-8

UTF-8是UNICODE的其中一个使用方式,全称为Unicode Translation Format,即把UNICODE转化为某种格式。UTF-8便于使用不同的计算机之间使用网络传输不同语言和编码的文字,使得双字节的UNICODE能够在单字节的处理系统上正确传输,UTF-8使用可变长度字节来存储UNICODE字符。

出现中文乱码的原因

Java的内核是UNICODE的,也就是说,java在处理字符时是用Unicode来表示字符的,但是文件和流的保存方式是使用字节流的,在java中,char是Unicode的,而byte是字节的,因此,在不同的环境里面,java要对字节流和char进行转换,因为java有着良好的跨平台性,对于java信息而言,将会在不同的操作系统平台上编译运行。
同时,java又是根据操作系统的默认编码字符集来决定字符串的初始编码,而且java的系统的输入和输出都是采取操作系统的默认编码,所以,当java运行的时候,如果字符集的编码选取不当,就会出现乱码的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值