24.字符编码

article/2025/9/29 3:16:42

1.字符编码

1.1简介

字符编码只与文本文件和字符串有关。
字符编码:记录人类字符与二进制数的对应关系。计算机只能识别二进制,但是通过字符编码可以展示出各式各样的语言字符。

1.2发展过程

1.计算机是美国人发明的,为了能够让加计算机能够识别英文字符,制作了ASCII码。ASCII码:记录了英文与二进制的对应关系,用一个字节来表示对应关系。所有的字符都和符号不超过127个,之所以使用8位,是留后路。
2.计算机普及世界,各国为了能使电脑能识别自己的语言字符,制作了不同的编码表。GBK码:记录英文和中文与二进制的对应关系。中文需要两个字节甚至更多。早期记录的对应关系少,现在,支持越来越多的生僻字。
3.为了实现不同国家之间的文本数据能够彼此无障碍交流,多编码进行统一。Unicode(万国码)统一使用两个及以上记录字符与二进制数的对应关系。utf8(优化版),英文一个字节存储,中文三个及以上的字节存储。**现在默认使用的是utf8**

1.3文件乱码问题

文件乱码是因为在存储文件所使用的编码,与打开文件的编码不一样导致。
文件以什么编码存储就要以什么编码打开。

1.4Python2中文报错

Python2 的诞生早于Unicode,Python2中使用的编码是ASCII码,编写代码后,
有中文字符时,运行会报错.(SyntaxError: Non-ASCII character,语法错误:非 ASCII 字符)
Python默认使用utf8,则不会出错。解决方式:
在Python文件的顶部写上(很多人喜欢写上**装饰,就是好看,没什么实际的作用)
# coding:utf8    <--- 称为‘头文件’
print(u'你好')  # 字符串前面写上u
# ** coding:utf8 **
str1 = u'你好'
print(str1)  # 你好
print(type(str1))  # <type 'unicode'>

2.编码与解码

2.1简述

编码:将人类能够理解的字符按照指定的编码转换为二进制数。
解码:将二进制按指定的编码转成人类能够理解的字符。

2.2Python编码解码

编码:
''.encoding('编码格式')
解码:
''.decoding('解码格式')注意点:
如果字符串只有字母和数据,可以在字符串的前面加上b进行转换。
str1 = 'hello word!'
str2 = 'hello word!123'print(str1.encode('utf8'))  # b'hello word!'
print(str2.encode('utf8'))  # b'hello word!123'str3 = '你好'
print(str1.encode('utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
str1 = '你好'
str2 = str1.encode('utf8')
print(str2)  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(str2.decode('utf8'))  # 你好
str1 = b'hao123'
print(str1)  # b'hao123'
print(type(str1))  # <class 'bytes'>

2.3编码格式长度

编码转换为二进制的数据的时候 一个字节对应一个\x格式数据.
len函数获取二进制的数据按\x格式数据计算数获取的就是字节的个数.
str1 = '哈哈哈'
print(len(str1))  # 3
str1 = '哈哈哈'.encode('utf8')
print(str1)  # b'\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88'
print(len(str1))  # 9

3.Unicode编码

内存中的编码使用的Unicode,无法设置.文本编辑器的存储编码可以修改,电脑显示编码可以修改.
中国境内安装的windows系统的编码为GBK2312.

3.1查看电脑默认编码

查看电脑系统的默认编码
1.win + r 启动运行
2.输入cmd
3.在终端输入chcp命令回车C:\Users\13600>chcp
活动代码页: 936

image-20211227174443846

image-20211227174936668

3.2代码页

代码页 国家(地区)或语言
437 美国
708 阿拉伯文(ASMO 708)
720 阿拉伯文(DOS)
850 多语言(拉丁文 I)
852 中欧(DOS) - 斯拉夫语(拉丁文 II)
855 西里尔文(俄语)
857 土耳其语
860 葡萄牙语
861 冰岛语
862 希伯来文(DOS)
863 加拿大 - 法语
865 日耳曼语
866 俄语 - 西里尔文(DOS)
869 现代希腊语
874 泰文(Windows)
932 日文(Shift-JIS)
936 中国 - 简体中文(GB2312)
949 韩文
950 繁体中文(Big5)
1200 Unicode
1201 Unicode (Big-Endian)
1250 中欧(Windows)
1251 西里尔文(Windows)
1252 西欧(Windows)
1253 希腊文(Windows)
1254 土耳其文(Windows)
1255 希伯来文(Windows)
1256 阿拉伯文(Windows)
1257 波罗的海文(Windows)
1258 越南文(Windows)
20866 西里尔文(KOI8-R)
21866 西里尔文(KOI8-U)
28592 中欧(ISO)
28593 拉丁文 3 (ISO)
28594 波罗的海文(ISO)
28595 西里尔文(ISO)
28596 阿拉伯文(ISO)
28597 希腊文(ISO)
28598 希伯来文(ISO-Visual)
38598 希伯来文(ISO-Logical)
50000 用户定义的
50001 自动选择
50220 日文(JIS)
50221 日文(JIS-允许一个字节的片假名)
50222 日文(JIS-允许一个字节的片假名 - SO/SI)
50225 韩文(ISO)
50932 日文(自动选择)
50949 韩文(自动选择)
51932 日文(EUC)
51949 韩文(EUC)
52936 简体中文(HZ)
65000 Unicode (UTF-7)
65001 Unicode (UTF-8)

3.3Python中Unicode对应的字符

Python3中只能到55296个字符(0 - 55295)。
其中常用:
0-9: 48-57
A-Z: 65-90
a-z: 95-122Unicode编码转换:http://tool.chinaz.com/tools/unicode.aspx
# 查看0 - 55295 的Unicode编码字符
for i in range(55296):# %c 转为Unicode字符print('%c' % i, end=' ')if i % 100 == 0:print()
十进制十六进制字符数编码分类(中文)编码分类(英文)
起始终止起始终止(个)
01270000007F128C0控制符及基本拉丁文C0 Control and Basic Latin
128255008000FF128C1控制符及拉丁文补充-1C1 Control and Latin 1 Supplement
2563830100017F128拉丁文扩展-ALatin Extended-A
3845910180024F208拉丁文扩展-BLatin Extended-B
592687025002AF96国际音标扩展IPA Extensions
68876702B002FF80空白修饰字母Spacing Modifiers
7688790300036F112结合用读音符号Combining Diacritics Marks
8801023037003FF144希腊文及科普特文Greek and Coptic
10241279040004FF256西里尔字母Cyrillic
128013270500052F48西里尔字母补充Cyrillic Supplement
132814230530058F96亚美尼亚语Armenian
14241535059005FF112希伯来文Hebrew
15361791060006FF256阿拉伯文Arabic
179218710700074F80叙利亚文Syriac
187219190750077F48阿拉伯文补充Arabic Supplement
19201983078007BF64马尔代夫语Thaana
1984204707C007FF64西非書面語言N’Ko
204821430800085F96阿维斯塔语及巴列维语Avestan and Pahlavi
214421750860087F32MandaicMandaic
21762223088008AF48撒马利亚语Samaritan
230424310900097F128天城文书Devanagari
24322559098009FF128孟加拉语Bengali
256026870A000A7F128锡克教文Gurmukhi
268828150A800AFF128古吉拉特文Gujarati
281629430B000B7F128奥里亚文Oriya
294430710B800BFF128泰米尔文Tamil
307231990C000C7F128泰卢固文Telugu
320033270C800CFF128卡纳达文Kannada
332834550D000D7F128德拉维族语Malayalam
345635830D800DFF128僧伽罗语Sinhala
358437110E000E7F128泰文Thai
371238390E800EFF128老挝文Lao
384040950F000FFF256藏文Tibetan
409642551000109F160缅甸语Myanmar
4256435110A010FF96格鲁吉亚语Georgian
43524607110011FF256朝鲜文Hangul Jamo
460849911200137F384埃塞俄比亚语Ethiopic
499250231380139F32埃塞俄比亚语补充Ethiopic Supplement
5024511913A013FF96切罗基语Cherokee
512057591400167F640统一加拿大土著语音节Unified Canadian Aboriginal Syllabics
576057911680169F32欧甘字母Ogham
5792588716A016FF96如尼文Runic
588859191700171F32塔加拉语Tagalog
592059511720173F32HanunóoHanunóo
595259831740175F32BuhidBuhid
598460151760177F32TagbanwaTagbanwa
60166143178017FF128高棉语Khmer
61446319180018AF176蒙古文Mongolian
6320639918B018FF80ChamCham
640064791900194F80LimbuLimbu
648065271950197F48德宏泰语Tai Le
65286623198019DF96新傣仂语New Tai Lue
6624665519E019FF32高棉语记号Kmer Symbols
665666871A001A1F32BugineseBuginese
668867511A201A5F64BatakBatak
678468951A801AEF112LannaLanna
691270391B001B7F128巴厘语Balinese
704070881B801BB049巽他语Sundanese
710471671BC01BFF64Pahawh HmongPahawh Hmong
716872471C001C4F80雷布查语Lepcha
724872951C501C7F48Ol ChikiOl Chiki
729673911C801CDF96曼尼普尔语Meithei/Manipuri
742475511D001D7F128语音学扩展Phonetic Extensions
755276151D801DBF64语音学扩展补充Phonetic Extensions Supplement
761676791DC01DFF64结合用读音符号补充Combining Diacritics Marks Supplement
768079351E001EFF256拉丁文扩充附加Latin Extended Additional
793681911F001FFF256希腊语扩充Greek Extended
819283032000206F112常用标点General Punctuation
830483512070209F48上标及下标Superscripts and Subscripts
8352839920A020CF48货币符号Currency Symbols
8400844720D020FF48组合用记号Combining Diacritics Marks for Symbols
844885272100214F80字母式符号Letterlike Symbols
852885912150218F64数字形式Number Form
85928703219021FF112箭头Arrows
87048959220022FF256数学运算符Mathematical Operator
89609215230023FF256杂项工业符号Miscellaneous Technical
921692792400243F64控制图片Control Pictures
928093112440245F32光学识别符Optical Character Recognition
93129471246024FF160封闭式字母数字Enclosed Alphanumerics
947295992500257F128制表符Box Drawing
960096312580259F32方块元素Block Element
9632972725A025FF96几何图形Geometric Shapes
97289983260026FF256杂项符号Miscellaneous Symbols
998410175270027BF192印刷符号Dingbats
101761022327C027EF48杂项数学符号-AMiscellaneous Mathematical Symbols-A
102241023927F027FF16追加箭头-ASupplemental Arrows-A
1024010495280028FF256盲文点字模型Braille Patterns
10496106232900297F128追加箭头-BSupplemental Arrows-B
1062410751298029FF128杂项数学符号-BMiscellaneous Mathematical Symbols-B
10752110072A002AFF256追加数学运算符Supplemental Mathematical Operator
11008112632B002BFF256杂项符号和箭头Miscellaneous Symbols and Arrows
11264113592C002C5F96格拉哥里字母Glagolitic
11360113912C602C7F32拉丁文扩展-CLatin Extended-C
11392115192C802CFF128古埃及语Coptic
11520115672D002D2F48格鲁吉亚语补充Georgian Supplement
11568116472D302D7F80提非纳文Tifinagh
11648117432D802DDF96埃塞俄比亚语扩展Ethiopic Extended
11776119032E002E7F128追加标点Supplemental Punctuation
11904120312E802EFF128CJK 部首补充CJK Radicals Supplement
12032122552F002FDF224康熙字典部首Kangxi Radicals
12272122872FF02FFF16表意文字描述符Ideographic Description Characters
12288123513000303F64CJK 符号和标点CJK Symbols and Punctuation
12352124473040309F96日文平假名Hiragana
124481254330A030FF96日文片假名Katakana
12544125913100312F48注音字母Bopomofo
12592126873130318F96朝鲜文兼容字母Hangul Compatibility Jamo
12688127033190319F16象形字注释标志Kanbun
127041273531A031BF32注音字母扩展Bopomofo Extended
127361278331C031EF48CJK 笔画CJK Strokes
127841279931F031FF16日文片假名语音扩展Katakana Phonetic Extensions
1280013055320032FF256封闭式 CJK 文字和月份Enclosed CJK Letters and Months
1305613311330033FF256CJK 兼容CJK Compatibility
133121990334004DBF6592CJK 统一表意符号扩展 ACJK Unified Ideographs Extension A
19904199674DC04DFF64易经六十四卦符号Yijing Hexagrams Symbols
19968408954E009FBF20928CJK 统一表意符号CJK Unified Ideographs
4096042127A000A48F1168彝文音节Yi Syllables
4212842191A490A4CF64彝文字根Yi Radicals
4224042527A500A61F288VaiVai
4259242751A660A6FF160统一加拿大土著语音节补充Unified Canadian Aboriginal Syllabics Supplement
4275242783A700A71F32声调修饰字母Modifier Tone Letters
4278443007A720A7FF224拉丁文扩展-DLatin Extended-D
4300843055A800A82F48Syloti NagriSyloti Nagri
4307243135A840A87F64八思巴字Phags-pa
4313643231A880A8DF96SaurashtraSaurashtra
4326443391A900A97F128爪哇语Javanese
4339243487A980A9DF96ChakmaChakma
4352043583AA00AA3F64Varang KshitiVarang Kshiti
4358443631AA40AA6F48Sorang SompengSorang Sompeng
4364843743AA80AADF96NewariNewari
4377643871AB00AB5F96越南傣语Vi?t Thái
4390443936AB80ABA033Kayah LiKayah Li
4403255215AC00D7AF11184朝鲜文音节Hangul Syllables
5529656319D800DBFF1024High-half zone of UTF-16High-half zone of UTF-16
5632057343DC00DFFF1024Low-half zone of UTF-16Low-half zone of UTF-16
5734463743E000F8FF6400自行使用區域Private Use Zone
6374464255F900FAFF512CJK 兼容象形文字CJK Compatibility Ideographs
6425664335FB00FB4F80字母表達形式Alphabetic Presentation Form
6433665023FB50FDFF688阿拉伯表達形式AArabic Presentation Form-A
6502465039FE00FE0F16变量选择符Variation Selector
6504065055FE10FE1F16竖排形式Vertical Forms
6505665071FE20FE2F16组合用半符号Combining Half Marks
6507265103FE30FE4F32CJK 兼容形式CJK Compatibility Forms
6510465135FE50FE6F32小型变体形式Small Form Variants
6513665279FE70FEFF144阿拉伯表達形式BArabic Presentation Form-B
6528065519FF00FFEF240半型及全型形式Halfwidth and Fullwidth Form
6552065535FFF0FFFF16特殊Specials

http://chatgpt.dhexx.cn/article/11Nj2pOm.shtml

相关文章

汉字编码

http://blog.csdn.net/zzidea/article/details/8497532 C语言编程&#xff0c;基本的类型有字符型&#xff0c;整数型&#xff0c;浮点型。这些类型是我们对事物进行描述所必不可少的东西。即基础&#xff0c;又非常核心。所以必须掌握。 一、 字符集 ASCII GB2…

《Qt5:键盘事件》

QKeyEvent类用来描述了一个键盘事件。常用的键盘事件有两种&#xff1a;按键按下和按键释放&#xff0c;一般按键按下事件用的多一点&#xff0c;下面为键盘按下和释放事件的声明&#xff1a; public:void keyPressEvent(QKeyEvent *event);void keyReleaseEvent(QKeyEvent *ev…

小伙 这样你就可以在Mac 中运行 Office 办公软件了

小伙 这样你就可以在Mac 中运行 Office 办公软件了 请参考以下步骤&#xff1a; 1、打开已经安装好的 CrossOver&#xff0c;点击“安装 Windows 应用程序”&#xff0c;在选择应用中的搜索框中输入“office”&#xff0c;接下来在下拉列表中会出现非常多的已经列出的相关软件&…

Unicode 编码表

正则查找: 中文文字中文符号表情符号... [^\x00-\xff] 其中 \x00-\xff 匹配 ASCII 代码中十六进制代码为 00-ff 的字符&#xff0c; 加个取反 ^ &#xff0c;则就表示表示匹配非单字节的字符&#xff0c;例如汉字&#xff0c;汉字符号等字符集。 中文文字&#xff08;简体繁体…

arduino学习笔记-库函数解析_LiquidCrystal_i2c使用说明以及lcd1602的驱动

LiquidCrystal_i2c是一个通过i2c驱动lcd显示屏的库函数&#xff0c;具体使用说明如下 i2c转接芯片的型号 PCA8574 arduino R3 A05 为 SCL A04 为 SDL 在头文件下要初始化对象 LiquidCrystal_I2C lcd(0x27,16,2); 对象名 lcd 可以任意&#xff0c;这关系到下面你使用方法…

Linux-Ubuntu系统 安装(重装)Mysql

一、检查服务器是否已有mysql &#xff08;如需自行下载jdbc相关包&#xff0c;例如mysql-connector等的有效网站&#xff1a;https://mvnrepository.com/artifact/mysql/mysql-connector-java/6.0.2&#xff09; 为确保后续没有权限错误&#xff0c;先切换到root用户权限&am…

HWP转Word说明

HWP&#xff0c;格式是韩国特有的文档格式&#xff0c;不能直接用MS Office打开或者直接转成Word&#xff0c;之前都是通过Hangul Viewer打印成XPS或PDF&#xff0c;再将文件转成Word&#xff0c;过程比较复杂&#xff0c;且Hangul Viewer打印时会自己在页脚处添加说明&#xf…

qt window release 打包的方法及常见问题,不同路径的差异

一、摘要&#xff1a;qt 程序开发后要发布打包&#xff0c;但是使用网上的教程&#xff0c;总是打这样那样的错误&#xff0c;如下面&#xff0c;我们总结一下原因&#xff0c;以及解决办法和注意事项 二、问题汇总 untitled01.exe-无法找到入口 无法定位程序输入点 ZNSt18cond…

Window系统打包QT程序

1、为什么打包 有时候我们编译出来的QT程序要给别人用&#xff0c;那么别人的电脑上可能没有安装QT&#xff0c;QT版本不同&#xff0c;或者其他因素的影响导致运行不了我们的程序&#xff0c;那么就需要打包给别人&#xff0c;把程序运行时候需要的一些库等资源都打包在一起&…

hangul2010(韩国办公软件) v8.0.0.466官方版

hangul2010 是一款韩文办公软件&#xff0c;由韩国软件公司hansoft开发的一款软件&#xff0c;由于其办公的实用性&#xff0c;软件界面的友好性&#xff0c;使得该软件在韩国非常出名&#xff0c;用户量也非常广。当然&#xff0c;也不是说只有韩国人才用的到该软件&#xff…

如何查看sql的执行计划

文章目录 如何使用plsql查看sql的执行计划&#xff1f;使用navicat返回内容解释idselect_typetabletypepossible_keyskeykey_lenrefrowsextra 如何使用plsql查看sql的执行计划&#xff1f; explain plan for &#xff08;select * from table&#xff09; 可查看该语句的sql执…

Mysql查看执行计划

使用explain关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的&#xff0c;分析你的查询语句或是表结构的性能瓶颈。 explain执行计划包含的信息 其中最重要的字段为&#xff1a;id、type、key、rows、Extra 各字段详解 id select查询…

Oracle查看执行计划

查看执行计划&#xff0c;分析慢查询SQL 在MySql中可以使用EXPLAIN关键字来查看执行计划并分析sql的执行情况&#xff0c;而在Oracle数据库中则需要两条sql来查看执行计划 EXPLAIN PLAN FOR SELECT * FROM user where username zhangsan; SELECT * FROM TABLE(dbms_xplan.d…

一文搞定 SQL Server 执行计划

导读 数据开发过程中&#xff0c;开发完成的 SQL 发布到生产环境&#xff0c;经常会发生 SQL 执行慢甚至根本无法执行&#xff0c;如何避免这种情况呢&#xff1f;这一篇我们分析一下 SQL Server 的执行计划是如何生成及如何阅读评估执行计划。 基本概念 在此之前&#xff0c…

spark学习之执行计划explain

&#x1f43c;今天我们来学习阅读spark的执行计划&#xff0c;在学习执行计划之前&#xff0c;我们需要了解spark中的代码是如何执行的&#xff0c;学习代码的执行过程有助于我们加深对spark的理解&#xff0c;对往期内容感兴趣的同学可以查看&#x1f447;: hadoop专题: hado…

详解mysql执行计划

在数据库查询的时候&#xff0c;我们通常会使用sql语句去查询自己所需要的数据。但是&#xff0c;关于sql在数据库中是如何执行的&#xff0c;它有没有使用索引&#xff0c;具体使用了哪些索引&#xff0c;查找了哪些字段和表&#xff0c;他们的顺序是怎样的&#xff0c;分别用…

Spark执行计划分析与研究

在学习、使用和研究spark的过程中&#xff0c;逐渐会发现&#xff1a;单纯看官方文档对spark参数调优只能解决一小部分的问题&#xff0c;要想进一步的学习spark&#xff0c;进一步调优甚至在spark源码的基础上二次开发&#xff0c;我觉得收益最高的应该是学习执行计划了。 因…

impala 执行计划详解

Impala是一个MPPMassivelyParallelProcessing计算引擎&#xff0c;简单来说就是将计算压力分到多个节点&#xff0c;得到结果后汇总&#xff0c;然后再返回给客户端。如果你留意过Impala的执行计划&#xff0c;会观察到exchange节点&#xff0c;该节点的作用就是分散计算压力的…

sqlserver 执行计划

一个很好的手册分享&#xff0c;执行计划里的属性解释官方文档&#xff1a;https://docs.microsoft.com/zh-cn/sql/relational-databases/showplan-logical-and-physical-operators-reference?viewsql-server-2017 想复杂的事情简单说&#xff0c;在看执行计划的其他文章的时…

MySQL执行计划

什么是执行计划 The set of operations T that the optimizer o chooses to perform the most efficient query t is called the “query execution plan”, also known as theEXPLAIN plan 如何获取SQL语句的执行计划 方法1&#xff1a; explain SQL 。方法2&#xff1a; …