web开发中的中文乱码问题分析

工作中经常出现中文字符乱码的问题,以及ASCII、ISO-8859-1、gb2312、GBK、unicode、utf-8、utf-16。。。编码到底是什么意思,为什么要编码?

因为计算机中能识别的只有0、1,所以要将各种字符变成01的格式,编码就是字符与数字的一种对应关系。

ACSII编码:

计算机最早出现在美国,26个字母大小写、数字、回车换行等符号,就用一个字节就可以搞定了,而且只用了一个字节的前七位,也就是128个字符,最高位恒为0。

ISO-8859-1:

随着计算机的推广,各个国家不同的语言对字符编码提出了新的要求,原来的128个字符已经不够用了,人们就将ASCII码的最高的一位利用了起来,扩充成了256个字符,也就出现了ISO-8859-1编码方式,它是兼容ASCII码的。

GBK:

当计算机来到中国的时候,问题又来了,256个字符完全不够用,中国的常用汉字就有6000多个,加上一些不常用的有20000多个,人们就通过增加字节的方式来对汉字进行编码,也就是从一个字节扩充到两个字节,这就是gb2312编码;后来又对gb2312进行了扩充,形成了GBK编码方式,这种方式是兼容gb2312的。

Unicode:

于是这样每个国家都搞出了一套自己的编码方案,各个方案之间互不兼容,无法进行沟通。于是国际标准化组织就搞了一个全球统一的unicode编码方案,它有多个版本,目前常用的是两个字节的编码方案。

UTF-8、UTF-16:

既然unicode已经解决了编码国际化的问题,那我们常听说的utf-8、utf-16又是什么东西,它们是用来解决什么问题的?

编码只是字符与数字的一种对应关系,unicode码是这样的一种对应关系,但是它并没有涉及到存储以及传输的问题。存储的时候哪个字节在前哪个字节在后?网络传输时又是先传输哪个字节?读取文件时计算机如何判断两个字节是两个ASCII码还是一个Unicode码?

因此需要一种统一的存储和传输格式来表示Unicode码,这种统一的实现方式称为UTF(unicode transformation format)。UTF-16与Unicode码完全对应,但是如果一片英文文章用UTF-16来存储的话,对空间造成了很大的浪费;于是UTF-8诞生了,它是一种变长的编码方式,根据不同的Unicode码采用不同的字节长度,减少了资源的浪费。

乱码问题:

1、根操作系统相关,文件的保存类型

2、不同的项目采用了不同的编码格式

3、在头部声明编码类型,保存时用了另外的编码格式

4、网络传输乱码,客户端与服务端请求与接收时的编码格式不一致

所有的乱码问题都是编码和解码的格式不一致造成的,但是由于一次操作往往涉及到多次编解码,所以出现乱码有时很难查找是哪个环节出了问题,所以就要跟代码进行debug。

时间: 2024-10-18 19:38:44

web开发中的中文乱码问题分析的相关文章

web开发中遇到的乱码问题

相信大家在web开发中会遇到乱码问题,有页面乱码,请求乱码,数据库乱码等等,下面我这边列举一下针对不同情况的乱码的解决方案: 1.相应数据乱码: //只需要在后台接口方法里面的开头写上这样一句话指定响应字符集是utf-8response.setContentType("text/html;charset=utf-8"); 2.请求数据乱码: ①.Get请求: 第一种方式 tomcat默认的字符集是iso8859-1,可以手动将其转换为想要的字符集,手动转码: 第二种方式,配置过滤器,使

Web开发中常用中文字体名称的英文对应

说明: 加上中文名"微软雅黑"是为了兼容opera. MicrosoftJhengHei为微软正黑体,STHeiti为华文黑体,MingLiu记得11px下的中文有着不凡的效果. 在css中推荐使用中文字体的英文表示法,以下附常见中文字体的英文名: Mac OS: 华文细黑:STHeiti Light [STXihei] 华文黑体:STHeiti 华文楷体:STKaiti 华文宋体:STSong 华文仿宋:STFangsong 儷黑 Pro:LiHei Pro Medium 儷宋 Pr

web开发中的乱码问题

乱码问题的根源:(以web程序为例子,eclipse来查看编码,设置UTF-8) 解决方案:所有文件或者字符串的编码方式一致 (1)查看web页面文件的编码方式:        (2)web页面的<head>写上          <meta http-equiv="content-type" content="text/html; charset=UTF-8"> (3)特别注意web里面的<form>提交时submit,带有中文

文《关于c++与java中文乱码问题分析与解决》中一个bug分析

文<关于c++与java中文乱码问题分析与解决>中一个bug分析 DionysosLai([email protected]) 2014/10/21 在前几篇一博客<关于c++与java中文乱码问题分析与解决>,地址如下:http://blog.csdn.net/dionysos_lai/article/details/38389765.文中详细介绍了c++与java数据传递时,为何会出现中文乱码的原因,并提出了适当的解决方法.方法如下: int CCDirector::GBKTo

WEB开发中的字符集和编码

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

详细阐述Web开发中的图片上传问题

Web开发中,图片上传是一种极其常见的功能.但是呢,每次做上传,都花费了不少时间. 一个"小功能"花费我这么多时间,真心不愉快. So,要得认真分析下原因. 1.在最初学习Java Web开发的时候,经验不足,属于能力问题,比如对技术认识不到位. 2.图片上传是一类问题,而不是一个问题.   比如,大家都会做饭,但每个人自己做饭是有不同的.做了一个人吃.一家人吃.喜事待客做好几桌,是不同的问题.   同样的,图片上传,是上传一张还是多张,前端的用户体验如何,后端逻辑处理是否正确,图片存

关于Android与pc通信时中文乱码的分析和解决

初步实现了Android与pc服务器的通信之后,又碰到了传说中令人头疼不已的中文乱码问题.既然出现了乱码,那么原因自然是协议不通了.我们知道eclipse中默认的编码标准是GBK,而安卓程序开发所默认的布局文件编码标准则是utf-8,这样一来,我们双方通信的时候便难免出现乱码.要解决它,就要从二者转换方面着手.     首先我们知道,从安卓手机界面上获得的文字,其编码字符集是utf-8,所以,当我们的java文件获得它时,它是以utf-8形式编译的.所以这里,在得到EditText中的文字之后,

SpringMVC开发过程中的中文乱码问题

相信大家在开发初期遇到中文乱码问题一定是一头雾水,不是数据库乱码了就是页面乱码了或者传值时乱码.其实解决乱码的途径很简单,就是统一编码与解码的类型,我把自己遇到的乱码问题整理出来,希望能够对大家有用. 首先需要对ide下的编码做统一,我使用的是idea,在页面下面如图所示都有文件编码类型,选择utf-8:  配置完后,需要对idea的全局编码也进行配置,在idea的配置中进行设置,Preferences中输入encoding,然后进行如下配置  配置完后,如果是jsp页面,那么也需要在jsp页面

解决jsp中的中文乱码问题笔记

一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供大家参考. 一.JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title> <meta http-equiv="Content-Type" con