charset编码方式与字符集(为什么会乱码)

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

背景

在微信小程序开发时,有时候请求的某些网页会出现乱码(尤其是爬取数据时),当我们在外部查看源码时,我们可以发现网页的编码格式不是utf-8
在这里插入图片描述

直接说解决方案

在请求求地址地址时,尝试加上charset=utf-8参数,例如https://www.xx.com/2231/84140.htm?charset=utf-8,如果ok则问题解决。

字符集

字符集(Charset):是一个系统支持的所有抽象字符的集合。

字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。即在符号集合与数字系统之间建立对应关系。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

常见字符集

  • iso-8859-1: 西欧的编码,英文编码
  • gb2312: 中文编码
  • utf-8 : 世界通用语言编码
  • big5: 繁体中文编码
  • euc-kr : 韩文编码

字符集有着十分有趣的历史(在我看来),可以自行搜索。

GBK与utf-8转换乱码问题的探究

本质:读取二进制的编码和最初将字符串转化成二进制的编码方式不一致。

GBK
采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。双字节其编码范围从8140至FEFE(剔除xx7F)。
单字节:00000000 - 01111111
双字节:10000001 01000000 - 11111110 11111110 (剔除******** 01111111)
单字节、双字节的区分通过高字节高位区分,单字节高位为0,双字节的高字节高位为1。
UTF-8
可变长字符编码,是unicode码的具体实现,UTF-8用1到6个字节编码Unicode字符。

当解码不符合当前的编码规则,会被解码成特殊字符,但此特殊字符再进行编码,是回不到最初的二进制的。


继续深入的阅读

聊聊gbk与utf8互转的乱码问题

关于 charset 的几种编码方式

74- 字符集详解(ASCII、GBK、Unicode) GBK编码使用了一个高字节和低字节的组合来表示一个字符,其中高字节位于0x81-0xFE的范围内,低字节在0x40-0x7E和0x80-0xFE之间。Unicode具体的编码方案有所区别,最常用的编码方案是UTF-8、UTF-16和UTF-32。GBK(GuoBiao Kuozhan)是中华人民共和国国家标准GB 2312的扩展编码形式,它采用双字节编码方案,提供对汉字、拉丁字母、符号和其他特殊字符的支持。Unicode的目标是提供一个全球通用的字符编码标准,以解决不同语言和文化之间的字符表示问题。 阅读详情

相关推荐

SQL字符集

1、字符集是所有编程语言里都必须面对的首要问题,必须在一开始就选择好字符集(去到企业后先问清楚)业务针对的符号业务针对的范围2、乱码是编程中最基础要解决的问题,一旦数据产生了乱码,通常是不可逆操作3、解决乱码问题其实本质就是统一字符集问题客户端字符集:character_set_client连接层字符集:character_set_connection结果集字符集:`character_set_results简单统一方式:set names 客户端字符集

zzzzzzxzzzsjjsj的博客 2756

字符集和字符编码(Charset & Encoding)

相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"、"�????????"?还记得HTTP中的Accept-Charset、Accept-Encoding、Accept-Language、Content-Encoding、Content-Language等消息头字段?这些就是接下来我们要探讨的。 1.基础知识 计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"

顺其自然~专栏 3481

字符集(charset)编码(encoding)区别对比

前言 字符集编码这两个概念常被混淆,两者是有差别的。 字符集字符集编码是两个不同层面的概念: (1)charset 是 character set 的简写,即字符集。 (2)encoding 是 charset encoding 的简写,即字符集编码,简称编码。、 接口及接口实现的对比 从这里可以很清楚地看到, 一、编码是依赖于字符集的,就像代码中的接口实现依赖于接口一样; 二、一个字符集...

🏆 前端领域优质创作者 2万+

html声明charset=“utf-8“后,浏览器访问中文依旧乱码的问题解决(绝对有效)

html声明charset="utf-8"后,浏览器访问中文依旧乱码(绝对有效) Created by Marydon on 2019-08-16 10:57 1.情景展示   html文件已经声明字符集为UTF-8,但是浏览器访问依旧乱码。   标题和页面内容都是乱码,这是怎么回事? 2.原因分析    charset="UTF-8"是让浏览器要用utf-8来解释,而文档的编码格式,是保存时的选择决定的。   也就是说:这个HTML文件保存时的字符集不是UTF-8!   所以,HT...

weixin_50464560的博客 3万+

理解字符集和字符编码(Charset & Encoding)

理解字符集和字符编码(Charset & Encoding)前言一、字符集和字符编码的理解二、常用字符集和字符编码1.ASCII1.1.标准ASCII1.2.扩展ASCII2. ISO-8859-13. GB23124. GBK5. Unicode字符集5.1. UTF-8编码5.2. UTF-16编码5.3. UTF-32编码5.4. 字节序常见疑问 前言 由于字符集和字符编码的种类比较多、历史也很久远,在许多方面不好理解。在此梳理总结我对字符集和字符编码的认识理解,以供查阅。若有不对,欢迎指正

子謀的博客 2522

字符集编码() charset vs encoding

charset encoding 的差别在哪? charset=utf-8 encoding=utf8 哪种写法更规范? 本文将探讨这两者的联系区别.

Just do IT 748

charset

charset 编辑 字符集Charset):是一个体系援助的通盘笼统字符的集合。字符是各种文字和符号的总称,包括各国度文字、标点符号、图形符号、数字等。 目录 1示例 2详情 1示例编辑 使用UTF8编码(国际化编码) 使用中文gbk编码 使用简体中

yqyily的专栏 688

Js,alert出现乱码问题,赶紧记下来

前些天还可以正常使用的js文件,在添加了一些东西后,其中的alert()弹出提示框总是中文乱码,在网上看了很多,给出的答案基本上是 加一个  或者是将gb2312换成utf-8,我用多种方法测了很久还是没能解决这问题。   最后终于在某个论坛的一个角落里发现了点东西, 原来在html里面引用js文件时要指定字符集编码方式, 具体做法是。

tianyaweizhiren的专栏 633

HTML5 新的 doctype 和 charset 是什么?

就这么几个字母,摆平了。这就是 HTML5 的一个设计准则之一——化繁为简。字符集的声明也被大大的简化。会导致中文网页的乱码,指定字符编码就可以了。

augenstern416的博客 347

Web项目乱码的原因

Charset编码基础  Charset全称Character Encoding或字符集编码。Charset是将字符(characters)转换成字节(bytes)或者将字节转换成字符的算法。Java内部采用unicode来表示一个字符。将unicode字符转换成字节的过程,称为“编码”;将字节恢复成unicode字符的过程,称为“解码”。 浏览器发送给WEB应用的request参

Evan's learning log 1136

HTML5中 页面显示中文的处理方法

用Notepad++写一个HTML的文件,保存为HTML文件,用浏览器打开文件时,发现文件中的中文全部显示为乱码源文件浏览器打开的样子可以看到源文件中的注册页面的文字在浏览器中显示为乱码原因是我们没有在html代码中声明字符集即编码,没有告诉浏览器用什么编码来解析文件,所以出现了乱码,在刚刚代码的中加入字符集的声明:<meta charset="UTF-8">,就是声明字符集使用的ut...

baoyang_2010的博客 4802

PyMySQL SQL和结果 中文乱码问题 解决

一、执行带有中文的SQL,出现sql.encode(self.encoding, 'surrogateescape'),出现如下错误: File "C:\Program Files\Python37\lib\site-packages\pymysql\connections.py", line 891, in query     sql = sql.encode(self.encoding, '...

在路上 2247

Git分支本质实战:从指针模型到合并冲突解决

版本控制系统是现代软件开发的基石,而Git作为分布式版本控制的代表,其分支设计是团队协作高效运转的核心。很多人误以为分支是文件夹的副本,实际它是提交对象上的可移动指针。理解这个指针模型是掌握一切分支操作的前提,它解释了创建、切换、合并分支时工作区和历史的变化规律。Git通过快速合并、三方合并、压缩合并等策略,在保留开发脉络简化历史之间提供平衡。当多人并行修改同一代码时,合并冲突不可避免,此时掌握冲突标记、解决工具回退机制至关重要。分支管理还涉及远程协作、命名规范、提交信息实践以及rebase策略取舍,这

weixin_34007020的博客 293

7、NIO--字符集Charset

字符集Charset 编码:字符串-->字节数组 解码:字节数组-->字符串 查看相关的字符集 @org.junit.Test public void test9(){ Map<String, Charset> map = Charset.availableCharsets(); ...

weixin_34211761的博客 102

python unicodedecodeerror_python3的UnicodeDecodeError解决方法

爬虫部分解码异常response.content.decode() # 默认使用 utf-8 出现解码异常以下是设计的通用解码通过 text 获取编码# 通过 text 获取编码import requestsfrom lxml import etreedef public_decode():headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Inte...

weixin_39748773的博客 292

java 获取网页编码_spider JAVA如何判断网页编码

前言最近做一个搜索项目,需要爬取很多网站获取需要的信息。在爬取网页的时候,需要获得该网页的编码,不然的话会发现爬取下来的网页有很多都是乱码。分析一般情况下,网页头信息会指定编码,可以解析header或者meta获得charset。但有时网页并没没有指定编码,这时就需要通过网页内容检测编码格式,通过调研,最好用的还是cpdetector。cpdetector自动检测文本编码格式,谁先返回非空,就以该...

weixin_42516642的博客 222

Servlet中文乱码问题

出现乱码是应为编码的问题 我们要查从三方面查起(源头-传输过程-显示) 1:源头即是编译器,便器的编码方式,在eclipse里面更改编码方式,改成UTF-8为默认的编码方式 2:传输过程使用什么编码,使用response.setContentType(“text/html;charset=UTF-8”) 3:显示的时候使用什么编码方式,头文件申明charset=”UTF-8” 只有这三种编

韩利鹏 341

FTP软件Filezilla出现“读取目录列表失败”的解决办法

FTP软件Filezilla出现“读取目录列表失败”情况一般出现在vista/win7系统上,之前在xp上没发现这种情况。 总的来说,不论是打开FTP出现乱码或者显示“读取目录列表失败”均是由字符集引起的。咱们的windows系统默认是采用的GBK码(仅支持中文字符及拉丁字符),而FTP服务器,为了更好的字符兼容性而采用UTF8码(在港台地区甚至有个名字叫“万国码”),以显示所有可能的...

baocun6294的博客 2111

mysql latin1 转 utf8 中文乱码

环境:mysql数据库字符集为:latin1            java web项目连接数据库为:utf-8 中文乱码解决办法: 插入时:把插入内容转为unicode,再插入数据库 查询时:把latin1查询结果转成unicode,再从unicode转成utf-8   /** * latin1字符集转换为UTF-8 * @param s * @return ...

xiaohuanxiong6616的专栏 631
上一篇: 【WordPress】添加备案信息
下一篇: 小程序获取WiFi列表(安卓,iOS疑难解决)
松鼠的一巴掌
博客等级 码龄6年 5粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值