开发中GBK+UTF8编码的处理

以前自己开发项目,前后统一,都是utf8,也没出现过什么问题。可是最近,一个小demo暴露出了问题。

html页面是gbk,php代码是utf8,数据库又是gbk,这,,,奶奶的,坑了~

页面有input 的text类型,和textarea ,都是文本输入和显示的。

涉及函数:

  js:encodeURIComponent()

  php:urldecode()  addslashes() htmlspecialchars()

解决思路:

  1、页面gbk、utf8无所谓,反正都会自动检测。输入字段提交时,用js的encodeURIComponent()处理,因为放在url上,防止特殊字符("#")将url截断。

  2、php是utf8,$_GET[""]到参数后,要对文本 用php的urldecode()解开。

  3、准备存入数据库时,一、对于字符串,要用addslashes()加转义。二、用UTF8转GBK函数,将字符串转编码。       //addslashes用来解决单引号、双引号、反斜杠、null

  4、读出数据库时,一、如果输出页面要gbk,则转gbk,不需要则不管。二、对于页面输出字符串,需要用php的htmlspecialchars()转义,防止xss攻击等。

时间: 2024-10-04 19:44:30

开发中GBK+UTF8编码的处理的相关文章

Python中GBK, UTF-8和Unicode的编码问题

编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t decodebyte0xc4inposition10:ordinalnotinrange(128) 这究竟是是个什么东西?!有时稀里糊涂地用一坨encode(),decode()之类的函数让程序能跑对了,可是下次遇到非ASCII编码时又悲剧了. 那么Python 2.x中的字符串究竟是个什么呢? 基本

解决困扰已久的mysql5.6.X安装版本在win7-64bit中设置utf8编码的问题

根据网络中的好多配置,把安装目录中的my-default.ini复制一份成my.ini 然后我修改了my.ini中的内容为 出现的一个问题是 解决方式为:需要接着修改my-default.ini中的mysqld部分,在[mysqld]下面加入 character-set-server=utf8 collation-server=utf8_general_ci 即可. 这里修改完要重启!要重启!要重启! 解决结果为正确显示UTF8编码,并且DB操作工具的内容显示汉字:

开发中遇到的编码问题(转)

1.说到编码,最大的问题就是乱码了,为啥会有乱码呢 ? 因为字符在编码和解码的时候,用的编码字典不一致,从而导致了乱码,常见的编码有ASCII.GBK.GB2312.UTF-8.UTF-16等. 2.为啥需要编码呢? 因为计算机的存储是二进制的,也就是01?010这种形式的,这样一些中文.法文.俄文等,就需要编码解码才可以达到效果. 3.java中数据类型的转换是啥? bit(位).byte(字节).char(字符) 1byte == 8bit      一位二进制称为一个bit,一个byte的

开发中遇到的编码的坑

选择一个安逸的环境,可以让你少去踩了很多的坑,比如本文所说的问题,编码问题. 编码问题主要存在于三个方面,一.编辑器编码,二.网络接收(接口)编码问题,三.数据库编码问题.这里,一个个问题可能都会让人头痛不已,下面我就来总结一下出现的问题及部分的解决方案. 编辑器问题,你是选择gbk还是选择utf8,这个问题如果放在现在开始的项目,肯定是选择utf8的,因为你不知道,这样会让少走许多编码转换的弯路.举例,php里使用json_encode要求使用utf8格式,jquery传送数据用utf8...

python中包含UTF-8编码中文的列表或字典的输出

在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果: >>> dict = {"asdf": "我们的python学习"} >>> print dict {'asdf': '\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84python\xe5\xad\xa6\xe4\xb9\xa0'} 在输出处理好的数据结构的时候很不方便,需要使用以下方法进行输出: >

js中汉字utf8编码互相转换

//UTF字符转换var UTFTranslate = {Change:function(pValue){return pValue.replace(/[^\u0000-\u00FF]/g,function($0){return escape($0).replace(/(%u)(\w{4})/gi,"&#x$2;")});},ReChange:function(pValue){return unescape(pValue.replace(/&#x/g,'%u').rep

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

python3 unicod,utf-8,gbk的编码和解码中文显示问题

python3的字符编码让人头疼.这个也不是一篇介绍gbk, utf-8, unicode怎么表示英文,中文字符的基础知识总结.网上有很多类似的文章,目前也不需要升入学习到了解各个bit位表示什么含义. 目的:清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示. 前提:了解不同编码用不同的二级制编码和长度来表示字符.在python3中,各种字符编码之间的互相转换都要通过unicode作为中间编码转换.gbk转换成unicode,再从unic

TomCat中server.xml编码的问题

这两天刚刚看了博客大牛的关于Javaweb的入门教程,里面开始介绍了关于Tomcat配置虚拟主机的内容,自己照猫画虎,但是出现了启动Tomcat后闪退的问题.查看了logs中的错误日志,报错信息如下所示: 警告: Catalina.start using conf/server.xml: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效. 上网查看了别