关于字符编码

我们知道在学习php和jsp的时候,出现乱码是经常性的事情,怎样来一劳永逸的解决这个问题,我来做个总结。

 

首先来了解一下字符集,我们关心的字符集大概有这么几个,iso-8859-1、gb2312、gbk、utf-8,其中iso-8859-1是采用1个字节进行编码,而gb2312和gbk则是在其基础之上使用双字节来对汉字进行编码,而utf-8使用了3个字节编码,因此它容纳了几乎所有字符,包括中国、日本和韩国的表意字符。这也就不难理解为什么字符集设置错误会导致乱码了。

 

再来看一下在编程的过程中有哪些地方涉及到字符集的设置,本质上只有两个地方,文件本身的字符集和浏览器解析时使用的字符集,当然数据库也存在字符集的设置(其实数据库本质和文件没有区别),那怎样才能避免乱码呢?我们用保证字符集的一致性,那就是数据库、文件、浏览器3者使用的字符集是一致的,要么都是gb2312,要么都是utf-8,当然iso-8859-1不行,它不支持中文。 数据库在建库和建表时可以设置字符集,文件在保存的时候可以选择字符集,那么浏览器的字符集怎么设置呢,首先浏览器由一个默认字符集,在中文操作系统下一般默认为gb2312,如果不进行设置,它就是解析文件的字符集;那应该怎么设置呢,有两种方法,一种在html中设置,即使用meta标签,在meta标签里面制定Content-type就可以了,meta标签是用来模拟http头信息的,另外一种就是在编程语言进行设置,我们可以像http header里面添加一个Content-type来制定字符集,如php里面的header()结构.

 

可是万一我们不能控制数据库或某些文件的编码了,那应该怎么处理呢,例如你现在所有的项目都是采用的utf-8(建议都这样使用),可是数据里面的数据却是gb2312,后者某个远程文件是使用gb2312编码,这些是你无法修改的,我们只有在程序中进行修改,如在php里面提供了iconv函数和mb系列函数进行字符的编码修改。 总之,一句话,让项目的所有地方保持编码一致性,无法控制的部分用字符集转化函数来改变它。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值