Web开发中的常见错误及处理研究

2020-03-16 02:31张仁美
电子技术与软件工程 2020年24期
关键词:乱码编码方式字符

张仁美

(贵州轻工职业技术学院 贵州省贵阳市 550025)

随着互联网技术的发展,为人类文明创新发展提供了推动力,人们之间的距离也明显缩小,借助微信或MSN 等手机APP 社交软件人们就可随时随地进行交流。当前,互联网技术发展水平不断提高并广泛应用于日常生活与工作中,确保人们足不出户就可知晓天下事。与此同时移动支付、网购等逐渐发展成为我国新四大发明,日常生活与工作更加便利。互联网行业快速发展的同时,各行业应用网络信息资源构建信息安全机制保障网络环境的安全与绿色性是十分必要的。在Web 开发中加强各类技术优化,以此推动网络信息可持续发展。

1 Web开发编码机制、规则等相关知识概述

1.1 编码机制

不同语言平台中,为了确保Java Web 程序运行更加稳定,统一采用Unicode 字符集表示其内部语言。Web 开发中,其源程序要求先应用默认操作系统编码方法转码操作,借助I/O 操作取得对应编码字节流,最后在Class 文件中输入转换后的UTF-8 字符编码。

文件操作如果属于简体中文格式,GBK 就成为默认编码格式,开发工作中GBK 转换成Unicode 的方法,最后在Class 文件中输入最终UTF-8 字符编码。要注意此过程中原系统不会发生乱码问题,假若在英文系统中移入该编码,就会加大中文乱码问题的发生几率,这主要是因Java 借助UTF-8 字符集读取Class 文件内容,并最终转换为Unicode 编码方式。实际转换过程中,以Unicode 编码为中介完成操作,此种情况下出现乱码主要是因字符解码字节流不正确或给出的字节流用所选字符集解码存在偏差。

1.2 Web编码规则

(1)ISO8859-1 编码方式。通常也被看作是Latin-1 亦或是西欧语言,属于单字节编码方式的一种,其可表示的所有字符在0-255个,因而英文状态编程下有很强的适用性。Java 网络传输为标准字符集的形成创造了条件。其能够兼容ASCII 编码,表示256 个字符但对中文编码却是不支持的。

(2)GB2312/GBK 编码。国家标准编码内容中,汉字信息交换法编码是重要构成,只可用于表示汉字。该编码流程中,GBK编码有效扩充了双字节形式的编码内涵,对简体与繁体字有明显的兼容性,而GB2312 只能对简体字进行表示,但GBK 却对此种编码形式有一定的兼容性。作为一种中文字符简体中文双字节编码方式,涵盖的汉字总量达到了6763 个。对于GB2312 编码方式而言,GBK 属于一种扩展模式,兼容性比较强。

(3)Unicode 编码方式,其代表着全部语言字符,对编码操作有明显统一性。通过定长双或者四字节方式进行编码流程开发,还要为每一字符设置唯一相对应的二进制编码。对于ISO8859-1 编码方法,该编码形式是不兼容的,其它任何编码也不能兼容。该编码能够实现跨语言与平台的文本转换与处理要求,因而也称为万国码。Unicode 编码是在ASCII 字元集扩展基础上产生中,其应用全16 位元字元集,可用于表示所有语言字符,利于统一进行编码。

(4)UTF-8 编码。该方式对 ISO8859-1 与Unicode 形式的编码有一定的兼容性,还能对全部语言字符进行表示。定长编码方法中该编码不包含在内,每一字符为1-6 个长度不同的字符。另外,该编码方法自身还能够发挥校验作用,一个字节就可表示一个英文字符,而汉字则至少需要3 个字节才能完全表示出来。

1.3 Web开发常用编码

Java Web 开发中,字符编码转换是十分必要的。计算机设备只能对二进制数做出识别,日常程序开发中,会用到很多的字母、阿拉伯数字及汉字等,要注意通过二进制方法在电脑上存储字符编码。Web 开发中,计算机设备处理字符分为编码与解码,字符储存到电脑上后转换成二进制数位,此过程即为编码;反之,如果电脑上二进制编码是用字符形式显现出来,这一过程即为解码。实际开发过程中,ISO8859- 1,UTF-8,Unicode,GB2312 及GBK 等是常用编码方式,要注意编码方式的不同,其要合理选择相应的编码规则。

2 Web开发过程中常见乱码问题及其解决途径

2.1 Eclipse环境编码问题与相应的解决方法

Eclipse 为核心的Web 开发设计过程中,为了尽可能预防中文乱码问题的出现,在jsp 页面中做好默认编码的设置。此时,为了保障中文显示效果,大多数情况下会以UTF-8 设置Eclipse 编码方式。实际工作中,可从以下几方面入手进行。首先,在jsp 页面中做好编码设置,程序语言为window-preferences-General Content Type -Text -Jsp,利用UTF-8 编码有效设置Default En Coding。其次,基于Eclipse 设置环境工作编码。Window-preferences General -workspace面板中基于UTF-8编码加强Text file encoding设置。最后,jsp 文件编码的设置,电脑程序面板中以UTF-8 加强Encoding 编码设置。

2.2 jsp页面中文显示方面

Jsp 页面访问时,网页开发过程中中文乱码是普遍存在的一种较为复杂的乱码问题。编码设置过程中,为了减小这一问题发生几率,一般将字符集添加到jsp 文件顶部,再借助UTF-8 形式为页面设置相应的编码格式,其设置的具体代码主要为:

另外,在服务器tomcat Web 文件配置Server.xml 中Connect 项中加入“URI Encoding=UTF-8”,再对tomcat 进行重新启动服务。

2.3 信息提交方面的问题

浏览器会以get 与post 方式将信息传递给服务器,实际工作中要根据实际情况选用相应的方式解决乱码问题。以get 方式提交信息时,基于“?参数名1=值1&参数名2=值2…”的方式将URL 及相关参数连接起来,选用ASCII 字符提交相关数据。提交表单时,浏览器选用ISO8859-1 编码方式向URL 中非ASCII 设计URL 编码传递相关的数据,服务器接收到此类数据后实施编码。因而,get 方式提交数据过程中出现乱码问题后,业务层利用String类get Bytes 解码手段接收信息参数,而New String(request.get Parameter("name").get Bytes("ISO-8859-1"),"客户编码方法")是其编码的具体语言形式。

2.4 页面链接方面的问题

在页面查询或者提交信息过程中,一旦URL 链接中有中文字符出现,阅读中文目录与文件名时出现乱码。这主要是因为应用URL 进行参数传递时,浏览器编码环境直接决定着程序编码,换言之UEL 中如果目录或文件名是中文情况下,通过浏览器进行参数等编码的设置,进而将这些编码有效的传递到后台之中。如果没有经过处理,就请求URL,如果URL 存在中文,就会引起中文乱码问题。研究测试发现,链接编码与解码是有效解决这一问题的办法。其中编码主要关键代码是:

链接地址进行解码是,主要代码为:

java.net.URL Decoder.decode(request.get Request URI(),"UTF-8"

2.5 My AQL 数据库设置方面的问题

对于My SQL 数据库而言,ISO8859-1 是编码的默认格式,数据存取过程中为了预防中文乱码问题,可利用UTF-8 修改MUSQL默认编码格式并解决乱码问题。日常工作中,主要通过安装目录中找到my.ini 文件方式进行。

将default-character-set=utf8引入到client、my sqld、my sql、my sql.server 及my sqld_safe 等项目下。此外,数据库连接URL 中将“jdbc:my sql://local host:3306/db1?use Encode=true&character Encoding=UTF8”视为URL 连接字符串,关键代码为character Encoding=utf8,表示以UTF-8 编码字符集进行对象连接。

2.6 中文乱码问题及解决方法

中文字符输入Servlet 中时,假若浏览器页面看到的内容为很多个“?”,那么表明出现中文乱码问题。实际工作中,此类乱码问题是如何形成的。当我们采用response 对象输出流编码过程中,选用ISO-8859-1 字符编码表,该字符表对中文不能支持,此时ISO-8859-1 字符编码表中就无法查询到与中文字符相对应的编码。如果查不到就要这些中文字符统一编码对应个数“63”。浏览器接收到该数据后实施解码,解码过程中选用默认支持中文字符编码表GB2312。而在GB2312 字符编码表中,“63”对应字符为“?”,实际操作中将“63”解码成“?”,就会形成乱码1。

Web日常开发工作中,对于中文输出乱码问题,可采取以下方法解决这一乱码问题。一方面,采用HTTP Servlet Response 接口提供的 set Character Encoding()的方法合理设置字符编码方法。众所周知,UTF-8 字符集只支持中文,可利用代码设置字符编码方式形成UTF-8 字符编码表。浏览器中,以UTF-8 设置其编码形式,为中文输出乱码问题的解决创造条件。另一方面,编码或解码方式都借助HTTP Servlet Response 对象提供的方式设计。利用response.set Character Encoding(“UTF-8”)通过UTF-8 编码字符表设置编码方式;还要借助UTF-8 字符表设置浏览器解码表,选用相同的编码与解码表条件下,就不会发生中文乱码问题。这两条语句功能还可利用 response.set Content Type(“text/HTML;char set=utf-8”)语言代码实现。

3 结束语

综上所述,软件对计算机系统而言是非常重要的,要加强软件系统测试、设计与后期维护等方面的设计,结合软件系统要求构建层次相同的模块。随着时代的进步,国家科学技术水平不断提高,所以软件开发过程也不断优化与完善。研究分析相关问题,以此深入解决软件开发设计中出现的问题,为顺利进行Web 开发奠定良好的基础。

猜你喜欢
乱码编码方式字符
字符代表几
一种USB接口字符液晶控制器设计
消失的殖民村庄和神秘字符
混合编码方式自适应差分进化算法优化设计宽带天线
炫迈:用神奇乱码勾引你视线
浅谈计算机网络通信中实时差错控制技术
如何解决Tomcat的乱码