Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >震惊!网页内容变成了天书!

震惊!网页内容变成了天书!

作者头像
用户5521279
发布于 2019-12-19 14:25:21
发布于 2019-12-19 14:25:21
71800
代码可运行
举报
文章被收录于专栏:搜狗测试搜狗测试
运行总次数:0
代码可运行

前言

小编前段时间遇到一个问题,使用浏览器打开某域名网页的小说阅读器,阅读器正文内容显示为乱码。 经排查定位发现,该问题是由于小说原网页改版后对原网页HTML内容解码失败引起的。 那么常见的网页相关编码基本逻辑及测试点都有哪些呢?

网页相关编码

常见的web网页编码的基本逻辑有:

1、URL编码;

2、HTML源码内容编码。

1、URL编码

URL 是统一资源定位器,是用来引导指向对应的网络资源的,狭义来说查询字符串并不是 URL 的一部分,URL 是由协议、域名、端口和 URI 组成的。URI 是统一资源标识符,是用来引导指向某站点的服务资源的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
URL=protocol+domain+port+URI

RFC 1738(Uniform Resource Locators (URL))规定 URL 只能包含英文字母、阿拉伯数字和某些标点符号,这要求在 URL 中使用非英文字符的话必须编码后使用。如果浏览器在编码URL和查询参数时使用的编码方式不一致,或者不同浏览器使用的URL编码机制不一致,就会导致无法正常解析。

2、HTML源码编码

当用浏览器打开某个URL网站查看网页内容时,之所以可以正常看到网页的内容,这一过程涉及到HTML网页源码的解码处理。

在解析HTML源码内容时,浏览器需要识别HTML源码对应的编码方式,从而根据此字符编码类型,解码对应的HTML内容,显示对应的文字,以保证不会显示乱码。

常见的HTML网页源码的编码方式有GBK、UTF-8、ISO8859-1,关于这三种编码方式的原理及规则介绍,在这里就不做赘述了,感兴趣的同学可以打开的链接了解https://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html

HTML源码编码

HTML源码编码类型的查看方式 1、response.header 在访问网页URL时,通过查看请求的response可以知晓其HTML源码的编码类型,具体查看response.headers中content-type的charset字段值。例如,通过fiddler看到某一网站的response,我们可以看出其编码类型为UTF-8。

如果headers中content-type无charset字段,只content-type:text/html,根据RFC2016的规定,认为采用的是默认的ISO-8859-1。 2、网页源代码 网页源代码中head的meta中会有charset的参数值,可以用来判断网页的编码类型。

HTML源码编码类型的测试 针对HTML源码内容的编码类型的测试,重点关注点是对不同的编码类型的网页,是否可以正常的解析其编码类型,并可以正确解码显示对应的HTML内容。

备注:在实际测试中发现,有的网页HTML中不同段落的charset字段值(编码类型)不一致,可能会导致浏览器解析编码类型时错误,影响网页内容的正常展示。

结语

作为APP端的软件测试人员,小编认为在提高测试能力的过程中,需要不断学习积累前端、客户端、后端等的常见基本概念及原理,如Android开发基本术语-webview、activity,https传输原理等。所谓知己知彼,百战不殆。 参考文章: 1.https://www.ibm.com/developerworks/cn/web/wa-lo-ecoding-response-problem/index.html; 2.https://www.crifan.com/summary_explain_what_is_html_charset_and_common_value_of_gb2312_gbk_utf_8_iso8859_1/; 3.https://juejin.im/post/5a6946846fb9a01ca267acd1;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Apache环境下页面乱码的几种可能总结
采用典型的LAMP架构开发的时候,环境中多处涉及到编码的指定,有一个地方忽略,都有可能造成页面汉字乱码的产生,本文将总结这些乱码产生的可能的原因,方便我们排查。
大江小浪
2018/07/25
1.2K0
http超文本协议,让http不再难懂(二)
一张导图 导图内容解析 http请求 请求行+请求头(多个key-value对象)+一个空行+实体内容 请求行 请求方法 常见方法:get post head trace put delete con
java思维导图
2018/03/15
8730
http超文本协议,让http不再难懂(二)
WEB:字符集、编码、乱码 —— 看这篇就够了
ASCII(美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,是现今最通用的单字节编码系统。
WEBJ2EE
2019/07/19
4.3K0
WEB:字符集、编码、乱码 —— 看这篇就够了
深入分析 Java 中的中文编码问题
不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的语言假定为英语,其它语言要能够在计算机中使用必须经过一次翻译,把它翻译成英语。这个翻译的过程就是编码。所以可以想象只要不是说英语的国家要能够使用计算机就必须要经过编码。这看起来有些霸道,但是这就是现状,这也和我们国家现在在大力推广汉语一样,希望其它国家都会说汉语,以后其它的语言都翻译成汉语,我们可以把计算机中存储信息的最小单位改成汉字,这样我们就不存在编码问题了。
九州暮云
2019/08/21
1.5K0
Python 爬虫使用Requests获取网页文本内容中文乱码
爬取的网页编码与我们爬取编码方式不一致造成的。如果爬取的网页编码方式为utf8,而我们爬取后程序使用ISO-8859-1编码方式进行编码并输出,这会引起乱码。如果我们爬取后程序改用utf8编码方式,就不会造成乱码。
smartsi
2019/08/07
14.4K0
Web开发须知:URL编码与解码
通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。   例如,Url参数字符串中使用k
李海彬
2018/03/27
2.7K0
Web开发须知:URL编码与解码
常见乱码问题分析
在字符集这一篇文章中,我们基本了解了字符集的一些概念,也知道了什么是编码,什么是编码什么是解码。那么接下来我们就聊聊乱码。
@阿诚
2020/09/01
1.5K0
常见乱码问题分析
从零学习安全测试,从XSS漏洞攻击和防御开始
作 者 牛志恒,腾讯互娱开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 WeTest 导读 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础、XSS基础、编码基础、XSS Payload、XSS攻击防御。 第一部分:漏洞攻防基础知识 XSS属于漏洞攻防,我们要研究它就要了解这个领域的一些行话,这样才好沟通交流。同时我建立了一个简易的攻击模型用于XSS漏洞学习。 1. 漏洞术语 了解一些简单术语就好。 VUL Vulnerability漏洞,指能对系统造成损坏或能借之攻
WeTest质量开放平台团队
2018/12/11
1.2K0
从零学习安全测试,从XSS漏洞攻击和防御开始
Java Web中的中文编码问题分析
在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语、日语要表示的符号太多,无法单纯用一个字节来完全表示,为了解决这个矛盾必须要有一个新的人类可识别的数据存储结构字符,而从char到byte必须编码。
张哥编程
2024/12/19
1870
Java Web中的中文编码问题分析
java中byte, iso-8859-1, UTF-8,乱码的根源
Post@https://ryan-miao.github.io 测试代码https://github.com/Ryan-Miao/someTest/commit/50241e50d4b6ecdb8820e58f4cb9628bfb7d77ec 背景 还是多语言, 在项目中遇到本地环境和服务端环境不一致乱码的情形。因此需要搞清楚乱码产生的过程,来分析原因。 获取多语言代码如下: private Map<String, String> getLocalizationContent(Locale locale
Ryan-Miao
2018/03/13
3.2K0
java中byte, iso-8859-1, UTF-8,乱码的根源
JavaWeb day7 Request和Response(上)
==Request是请求对象,Response是响应对象。==这两个对象在我们使用Servlet的时候有看到:图片
小小程序员
2023/02/21
7990
JavaWeb day7 Request和Response(上)
编码格式
一、请求编码 1.1 直接在地址栏中给出中文 请求数据是由客户端浏览器发送服务器的,请求数据的编码是由浏览器决定的。例如在浏览器地址栏中给出:http://localhost:8080/hello/
星哥玩云
2022/09/14
1.4K0
webkit浏览器常见开发问题
前段时间有人问我一个简单的问题,html如何创建解析的?  我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这些类。 一步一步的完成cache查找然后请求下载等等。  滔滔不绝,直到我调试xml解析时,我才发现好多问题都与理解的不一致, 在分析源码的时候只了解了大体步骤。细节你真的清楚吗? 一、HTTP header 网页头请求 Reques
程序员互动联盟
2018/03/12
8640
中文编码问题详解
ASCII,ISO-8859-1,GB2312,GNBK,UTF-8,UTF-16等
洋仔聊编程
2019/01/15
3.1K0
关于Servlet,JSP,HTML中文乱码的问题(转载自https://blog.csdn.net/qq_27368993/article/details/83616090)
首先说明一点,以下的测试方法只有一个HttpServletRequest.forward,但是基于原理上的讲解,其他乱码问题应该也可以从中得到一些启示。不敢保证百分百正确,但能提供一个大致的方向。
_DIY
2020/05/27
9960
小白学爬虫系列-基础-两种爬虫实现方式
网络爬虫的第一步就是根据 URL,获取网页的 HTM L信息。在 Python3 中,可以使用 urllib.request 和requests 进行网页数据获取。
小一不二三
2019/12/31
6890
response对象
response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。
星哥玩云
2022/09/14
1.4K0
response对象
解析Java中文乱码的处理方法
【引自程序犹如人生的博客】为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程。汉语编程是怎么回事,我也不大清楚,应该是前年吧!我一朋友给我介绍汉语编程,怎么不错不错?当时因为学习忙没去关注这个,等我闲了,那个朋友不弄这个,问他,他也不说不大清楚,最后自己对这个学习也不了了之了。
全栈程序员站长
2022/09/08
2.8K0
各种编码格式,你懂得!!!
GBK,ISO-8859-1,GB2312的本质区别 编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标准 但是后来计算机普及了 于是就中国要使用计算机了 但是机器不认得中文,于是就有了国际码。 gbk gb2312都是这类。两个其实一个,一个是标准(发布的代号),一个是简称。后来多了个阿拉伯语、日语、韩语......所以就出来统一编码UniCode ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。此字符集主要支持欧洲使用的语言。
李才哥
2019/07/10
11.2K0
各种编码格式,你懂得!!!
JSP中文乱码的产生原因及解决方案
JSP中文乱码的产生原因及解决方案在JSP的开发过程中,经常出现中文乱码的问题,可能一直困扰着大家,现在把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。首先需要了解一下Java中文问题的由来: Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文
java达人
2018/01/31
3.6K0
相关推荐
Apache环境下页面乱码的几种可能总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验