今天突然碰到了网页乱码问题,啥折腾了几个小时,算是明白了其中一点奥妙。自己掌握的知识还是太少了,老是觉得莫名其妙的问题,其实明白了它就是这样。
网页的编码由许多方面决定着,我目前整理的有如下四个方面:文件保存的编码类型,文件中声明的编码类型,服务器的编码类型,客户端的编码类型。
- 文件保存的编码类型。我平时可能很容易忽略这个,因为编辑器给我设置了一个默认的编码保存方式,一般是ANSI,这个值是可以更改的,越强大的编辑器可选择的编码类型越多。Windows上最简单的记事本在使用另存为方式保存文件时都可以设置要保存的编码类型。
- 文件中声明的编码类型。在写Html文件时,我可能都会忽略在<head>标签对中的这个声明: <meta http-equiv="Content-Type" content="text/html; charset=utf8" />,经过我简单的测试,我感觉其中charset的属性就是在告诉客户端(比如浏览器):我使用的是XXX编码,请使用对应的编码来解析我。如果不声明的话,浏览器会使用操作系统默认的语言环境所使用的编码来解析Html文件。
- 服务器的编码类型。这个一般都是写在某个配置文件中,大部分时候它可能没有启用。服务器其实挺聪明的,在没有启用默认编码的情况下,它会根据文件保存的编码类型自动解析后返回给客户端。如果启用了默认编码,则转换为默认编码后返回给客户端。所以这里最好是不要设置默认文件编码。(服务器环境有些复杂,这个东西理解可能有问题)
- 客户端的编码类型。以浏览器为例,可以设置查看网页所使用的编码类型。找找各大浏览器设置项里面的编码/Encoding总会找到一大串的编码类型,看得你头晕。一般我们都不会去动这个设置项,它已经非常精明。勾上自动选择/Auto detect 项之后基本上就万事大吉了。
接下来就看看乱码是怎么出现的了。
首先要说明的是,如果上面四个方面的编码类型都是一致的话,那么绝对不会有乱码问题出现。如果真有乱码问题,那估计是人品问题了,哈哈~这里暂时没有考虑从数据库取出数据以及表单提交数据两方面。
在中文情况下,常见的问题是1中使用了默认的ANSI,2中声明用utf8,或者1中使用utf8,2中声明用gb2312,两种情况都是会出问题的。但当1中使用ANSI,2中使用gb2312或者不声明时,大部分情况下是正常的。我暂时认为ANSI和gb2312这种组合没问题是因为它们使用同样的字节位数来储存信息的,而utf8则跟他们不一样,采用更多位数来储存信息,才能满足各个国家需要的国际标准。
既然如此,那我们为什么还提倡用utf8呢,其实也就是为了解决那小部分情况。当浏览器所在的操作系统非中文且未安装中文环境时,浏览gb2312编码的页面时将会是一片乱码,而utf8编码的页面则不会出现这种问题。
接下来看看数据库的数据输出以及表单提交数据的问题了。
同样的道理,数据库储存的数据和表单中输入的数据也有自己的编码类型,当这些编码类型与我们页面设置的数据不一致时,出现乱码也是在情理之中。我们要控制的就是在数据流入流出之前做转换就不会有问题了。我记得在Java中比较理想的解决方案是通过建立全局的过滤器机制来处理的。想必其它的编程语言也有类似的处理机制。当然你不嫌累,也可以在每个出入口拦截转换。
另外,当我们浏览的网站出现乱码时,如果是中文网站的话,其实很容易解决的。在浏览器的编码设置里,换一下编码类型utf8/gb2312/gbk/gb18030/big5,如果还不行的话,估计又是人品问题了,那网站也没救了。
---------------------------------------------------------
本文参考了网上许多优秀的资料,不能一一列举,在此一并致谢。写的是折腾这么久的一点感受,作为参考,希望以后不要犯类似的错误。如有不妥之处,欢迎指正!
分享到:
相关推荐
HTML页面乱码问题是一个常见的开发痛点,特别是在处理多种编码格式时。本文将深入探讨这个问题,以便更好地理解和解决这类问题。 首先,我们需要理解编码的基础知识。字符编码是用来将字符(如字母、数字、符号)...
在Python中进行网页抓取(Web Scraping)是一项常见的任务,但往往在处理HTML页面时会遇到乱码问题。这通常发生在读取、解析或保存网页内容时,由于编码不匹配导致字符无法正确显示。本篇文章将深入探讨Python抓取并...
在网页开发过程中,乱码问题是一个常见的困扰,尤其是在HTML页面中。乱码通常是由于字符编码不一致或不正确导致的,下面将详细讲解四种常见的HTML网页乱码问题及其解决策略。 1. HTML的字符编码问题 这是最常见的...
以前我遇到乱码问题时,就是不停的尝试不同的编码方式,直到成功。昨天项目又遇到了这个问题,我于是做了简单的测试。 html文件是有编码方式的,比如"UTF-8"、"GBK"等等。这些在记事本中或许看不出来,但是在...
解决Web页面乱码问题的关键在于理解不同阶段的字符编码需求,并确保在各个步骤中进行适当的编码转换。无论是JSP页面的编译执行,还是与浏览器、数据库的交互,都需注意字符编码的一致性和正确性。通过在开发初期设定...
10. **调试技巧**:在排查乱码问题时,可以使用`System.out.println`或日志记录工具打印出原始的非编码字符串,以便查看乱码是否在传输过程中就已经产生。 通过以上步骤,你应该能够有效地解决Servlet页面的乱码...
通过上述分析可知,解决JSP页面提交乱码问题的关键在于确保客户端与服务器端之间字符编码的一致性。具体可以通过设置HTML页面编码、设置JSP页面处理请求的字符编码以及正确处理不同的表单提交方式等方法来实现。此外...
通过本篇文章的学习,我们了解到HTML页面中出现部分乱码问题时,首先要考虑的是字符编码的设置问题。具体到本例中,问题出现在开发工具WebStorm的文件编码设置上。通过调整编码设置为UTF-8,并执行转换操作,最终...
### Asp.net中的页面乱码问题解析 在Asp.net开发过程中,页面乱码问题是一个常见且必须解决的问题。特别是当涉及到中文等特殊字符时,处理不当很容易导致页面显示异常。本文将根据提供的代码片段及描述,深入分析并...
为了解决这类问题,本文将对Web常用编码进行概述,并探讨页面跳转乱码问题的原因和解决方案。 Web常用编码概述 Web应用中常见的编码类型包括ISO8859-1、UTF-8、GBK、ISO8859-1和Unicode等。每种编码都有其特点和...
### 网页乱码问题的解决方案:深入解析与应对策略 #### 一、问题概述 在网页开发中,字符编码问题常常导致显示乱码,尤其是涉及到多语言环境时更为常见。网页乱码通常源于服务器端数据库编码设置、前端页面编码...
这样做可以确保页面的编码方式与内容一致,避免乱码问题的发生。 2. **设置`Content-Type`**:在`<head>`部分设置`<meta>`标签,指定页面的编码格式为GB2312(或其他需要的字符集),如: ```html ...
JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现服务器端的数据处理和逻辑控制。然而,由于涉及到多种编码标准和传输过程,编码问题可能导致乱码的出现。为了解决这些...
解决 JSP 中文乱码问题 解决 JSP 中文乱码问题是一个很常见...解决 JSP 中文乱码问题需要从多方面入手,包括在 JSP 文件中指定编码方式,在 Java 文件中指定编码方式,在页面中指定编码方式,并确保编码方式的一致性。
##### 3.1 HTML页面中的乱码问题 HTML页面中,可以通过`<meta>`标签来声明页面的字符集。例如: ```html <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> ``` 但是,如果引用的JavaScript...
如果直接拼接,传到后台Action的参数对象中后取出会是乱码,需要编码后再拼接到URL上。 解决方法是在Action中添加一个成员变量,保存编码后的中文参数。在vm页面渲染时取出这个变量值,再拼接超链接。 在这里碰到的...
总之,处理HTML5乱码问题的关键在于理解和保持一致性:从HTML文档的声明、服务器配置、数据库到文件保存,每一步都需要确保使用相同的字符编码。而html5shiv这样的工具,则是在特定场景下为旧版浏览器提供额外支持,...
在 JSP 与页面参数之间的乱码问题中,JSP 获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,...
"jsp 页面乱码问题"这个标题直指一个核心问题:在处理JSP页面时,可能出现的文字乱码现象。这通常与数据的编码和解码过程有关,特别是在HTTP请求(比如POST方法)中传输包含非ASCII字符(如汉字)的数据时。 首先,...