首页 > 其他分享 >第 10 节 字符编码的处理

第 10 节 字符编码的处理

时间:2023-11-23 14:04:59浏览次数:29  
标签:10 编码 UTF 字符 Python 编码标准 Unicode

什么是字符编码
计算机从本质上来说只认识二进制中的0和1,可以说任何数据在计算机中实际的物理表现形式也就是0和1。
字符编码(Character Encoding)是一种将字符映射为特定二进制模式的系统。它允许计算机以统一的方式存储和处理字符,无论是字母、数字、符号还是特殊字符。
字符编码的目的是为了方便计算机处理和存储文本。常见的字符编码包括ASC川、UTF-8、GBK等。
字符编码通常将字符集中的每个字符映射为一个或多个字节(binary digits)。这些字节可以被计算机理解和操作,以实现文本的存储、传输和处理。

常见的字符编码
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最常用的字符编码标准之一,它为每个字符定义了一个对应的唯一的二进制编码,使得计算机可以方便地存储、传输和处理文本数据。
ASC编码是最早的字符编码标准,它只包含128个字符,包括大小写英文字母、数字、标点符号和控制字符。
它的每个字符都对应一个唯一的7位二进制数。
ASC编码的用途非常广泛,它是计算机内部处理文本数据的基础。例如,在计算机之间传输文本数据时,
发送方和接收方需要使用相同的字符编码标准才能正确地解析和处理数据。ASC川编码也是很多其他字符编码标准的基础,
例如UTF-8编码就是基于ASC川编码扩展而来的。

ASCII编码对照表

Unicode字符编码标准,它旨在为全球范围内的所有字符提供一个统一的编码系统

Unicode使用一个二进制数值来表示每个字符,这样就可以确保每个字符在全球范围内具有唯一的表示。这种统一的编码方式使得在不同平台、不同语言之间交换和处理文本数据成为可能。
Unicode编码通常使用一个特定的编码方案来实现。最常见的Unicode:编码方案是UTF-8,
它是一种可变长度的编码方式。UTF8使用1到4个字节来表示一个字符,其中一些字节组合用来表示一些常用的字符,
这样可以提高编码效率。应用过程使用了\u来指示这是一个Unicode?转义序列.

第 10 节 字符编码的处理_字符编码

 

UTF-8(Unicode Transformation Format-.8bits)是一种可变长度的Unicode编码方案,它用于将字符映射为字节序列
UTF-8编码具有以下特点:
兼容性:UTF-8完全兼容ASCI川编码,即ASCII字符在UTF-8中的编码和ASCI川相同
变长编码:UTF-8使用1到4个字节来表示一个字符,这使得它可以表示广泛的字符集,包括世界上几乎所有的语言字符。
向前兼容:UTF-8的设计使得旧的UTF-8编码在新的版本中保持不变,这使得UTF-8在不断演进的过程中仍然保持兼容性

第 10 节 字符编码的处理_ico_02

 

GB2312字符编码标准,主要是为了解决汉字在计算机中使用的问题。
这是中国国家标准化管理局(GB)制定的一种简体中文字符集编码标准,用于将汉字和其他字符编码为二进制格式
以便在计算机系统中使用。

第 10 节 字符编码的处理_字符编码_03

 

ISO-8859字符编码标准,定义了不同标准字符集的编码规则,用于将字符编码为二进制格式,以便在计算机系统中使用
ISO-8859是为了解决ASC川编码无法表示多种语言和特殊字符的问题而设计的
ISO-8859编码在文本传输和网页设计中得到了广泛应用。在邮件传输中,它通常用于SMTP协议和POP3协议,
以支持多种语言和特殊字符的传输。

处理字符编码
在使用Python处理字符编码问题时,以下是一些常见的方法:
1.字符串编码与解码:可以使用字符串的`encode()方法将字符串编码为指定的编码格式,使用`decode()方法将已编码的字符串解码为指定的编码格式。
2、处理转码错误:在进行编码转换时,如果遇到无法解码或编码的字符,可能会引发`Unicode DecodeError`或UnicodeEncodeError`.
可以使用`errors'参数来处理这些错误,常见的处理方式包括`ignore(忽略错误)、`replace`(用占位符代替错误字符)等。

第 10 节 字符编码的处理_Python_04

 

在使用Python处理字符编码问题时,以下是一些常见的方法:
3、当文本文件包含中文字符时,可能会出现乱码或其他显示问题。这通常是因为中文字符编码使用了与Python解释器不兼容的字符编码。要解决这个问题,可以指定文件的编码方式为UTF-8,并使用codecs.open()函数打开文件

第 10 节 字符编码的处理_Python_05

 

4、无法正确读取二进制数据:当尝试使用codecs.open()函数读取二进制数据时,可能会出现错误.这是因为codecs.open()函数默认将文件视为文本文件。
要解决这个问题,可以使用二进制模式打开文件,例如使用codecs.open()函数的encoding=None参数并使用二进制模式打开文件。

第 10 节 字符编码的处理_ico_06

 

应用字符编码学习建议
了解字符编码的基本概念:学习Python应用字符编码之前,你需要了解字符编码的基本概念。这包括ASCII码、Unicode、UTF-8等。
学习Python内置的编码支持:Python内置了对多种字符编码的支持,包括UTF-8。了解Python如何处理字符编码,可以帮助你更好地理解如何应用字符编码。
使用Python内置的字符编码函数:Python提供了许多内置的函数来处理字符编码,例如encode()和decode().了解这些函数以及如何使用它们可以帮助更好地应用字符编码。
阅读官方文档和教程:Python官方文档提供了详细的关于字符编码的说明和教程。阅读这些文档可以帮助你更好地理解Python应用字符编码的方式。
多多实践:最好的学习方式是实践。尝试使用Python编写包含字符编码的代码,并尝试不同的编码方式来加深对字符编码的理解。

官方资料 Unicode指南 https://docs.python.org/zh-cn/3/howto/unicode.html



标签:10,编码,UTF,字符,Python,编码标准,Unicode
From: https://blog.51cto.com/simadi/8528888

相关文章

  • 20211105李宜时TCP/IP网络编程学习笔记13
    20211105李宜时TCP/IP网络编程学习笔记1.网络编程简介网络编程是指编写能够在网络中传输数据的程序,比如互联网。在Linux系统中,网络编程通常涉及使用套接字API。2.TCP/IP协议TCP/IP是一组用于互联网数据交换的协议。它包括传输控制协议(TCP)和网络互联协议(IP)。3.IP主机......
  • c++小程序/随机产生100以内的一个自然数,给出7次机会猜测数的大小
    一、随机产生100以内的一个自然数,给出7次机会猜测数的大小要求:1、 如果猜对了,提示:“真聪明,您猜对了!”,并退出程序2、 如果猜得数比随机数大,给出提示“你猜的数太大了”3、 如果猜得数比随机数小,提示“您猜的数太小了”,如果超出七次没有猜对,提示“很遗憾,您没有猜对”,并退出程序......
  • js如何计算字符串的字节数
    如果计算字符长度只需要使用length,letstr="hello世界";console.log(str.length)//7如何计算所占用的字节数呢?functiongetByteLength(str){letlength=0;for(leti=0;i<str.length;i++){letcharCode=s......
  • 数据分析从入门到高级,10分钟帮你构建知识体系!
    数据分析是一种通过收集、整理、解释和可视化数据来获得洞察力和做出决策的过程。它在各行各业都起着至关重要的作用,包括市场营销、金融、医疗保健、人力资源等领域。在本文中,我将为你介绍数据分析的入门知识,并逐步向你介绍一些高级概念和技巧。入门知识1.数据分析的基本概念......
  • Python中列表和字符串常用的数据去重方法你还记得几个?
    (Python中列表和字符串常用的数据去重方法你还记得几个?)1关于数据去重关于数据去重,咱们这里简单理解下,就是删除掉重复的数据;应用的场景比如某些产品产生的大数据,有很多重复的数据,为了不影响分析结果,我们可能需要对这些数据进行去重,删除重复的数据,提高分析效率等等。2字符串......
  • C#.NET 循环字符串 V20231123
    C#.NET循环字符串V20231123 publicstaticboolIsIllegalOutTradeNo(stringOutTradeNo){foreach(chariteminOutTradeNo){if(item=='('||item==')'||item==','||item=......
  • 字符串之多种个性化格式处理
    此文重点讲述:字符串之个性化格式处理。个性化字符串工具类importjava.util.List;importjava.util.Random;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***字符串工具类*/publicfinalclassStringUtils{privateStringUtils(){......
  • P4180 [BJWC2010] 严格次小生成树
    如果有两条在最小生成树上的边被换掉了,那么原树会被分成三个连通块。考虑新加的两条边,保留权值较小的那一条,这样还剩两个连通块。而删除的两条边至少有一条能连通这两个连通块,所以可以保留那条边。并且新加的两条边中权值较大的那一条肯定大于等于我们保留的边,否则与最小生成树......
  • strncmp源码,及其在含0x00字符数组中的使用问题
    源码结论,strncmp不能在比较字符数组中同一位置可能均为0x00时使用。#include<string.h>intSTRNCMP(constchar*s1,constchar*s2,size_tn){unsignedcharc1='\0';unsignedcharc2='\0';if(n>=4){size_tn4=n>&......
  • (字符串)01-字符串变形
    1importjava.util.*;23publicclassSolution{4/**5*@paramsstring字符串6*@paramnint整型7*@returnstring字符串8*/9publicStringtrans(Strings,intn){10//校验字符串长度11if......