​鲁迅曾经说

没有被编码格式困扰过的程序员

注定留有遗憾

常言道

常在路上跑

​哪能不摔倒

摔倒快起身

躺着睡更好

书归正传

躺归躺

闹归闹

决不能拿写代码开玩笑

毕竟我代码很大 健壮

你忍一下

~~~~~~~~~~~~~~优雅~~~~~~~~~~~~~~

一、ASCII码

首先熟悉下,什么叫ASCII码?想要直接看代码的小伙伴直接跳过,看第三部分。

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

二、中文编码

ASCII码表示西文字符是用7位的ASCII码,为了在计算机中存储,最高位(第八位)默认为0,所以可以表示2的7次方个不同的字符;扩展的ASCII码,使用的第八位,不在默认为0,所以最多可以表示2的8次方个字符。

中文却不大一样。中文的一个汉字占16位,也就是两个字节的位置。编码方式跟ASCII码类似,但是为了与ASCII码区别开来,最高位默认为1。这里需要注意的一点是,部分编码格式,中文占三个字节。因此,如果含有中文,编码格式错误经常会导致乱码的发生。

国标码是 用于计算机之间或与终端之间信息交换时的汉字代码(GB2312,GBK,GB18030), 由连续的两个字节组成,每个字节七位有效,最高位为1。

正常汉字的显示处理也非常复杂:

三、编码转换

字符转换。字符的转换很简单,一般借助ord方法可以直接转换,转换的结果就是对应的ASCII码。中文的编码格式为Unicode,和UTF、GBK等一样,他也是一种编码方式。

接下来的代码以Python为例。

字符串转换。字符串的转换,就相对复杂一些。在Python3下,内存中默认编码方式为Unicode。Unicode编码类似于世界上的英语,是一种通用的编码方式,他可以表示所有的字符。

所以,如果全世界都是用Unicode编码的话,从此将不再有乱码问题。但是计算机中最重要的两种资源:时间和空间。全部使用Unicode编码,带来的空间消耗是ASCII编码的两倍。

本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

Python3中的字符串,是unicode,只能encode,所以无论如何打印都不会乱码,因为可以理解为从内存打印到内存,即内存->内存,unicode->unicode

str是unicode,当程序执行时,无需加u,str也会被以unicode形式保存新的内存空间中,str可以直接encode成任意编码格式,s.encode('utf-8'),s.encode('gbk')

所以,当使用不同编码方式去编码字符串的时候,可以看到不同编码方式转换的结果:

# -*- encoding:utf8 -*-
import string
​
​
str_test="西安"
​
print(str_test)
str_gbk = str_test.encode('gbk')
print(str_gbk)
str_utf8 = str_test.encode('utf8')
print(str_utf8)
​

编码格式互转:

# -*- encoding:utf8 -*-
import string
​
​
str_test="西安"
​
print(str_test)
str_gbk = str_test.encode('gbk')
print(str_gbk)
str_utf8 = str_test.encode('utf8')
print(str_utf8)
​
str_gbk = str_test.encode('gbk')
print(str_gbk.decode('gbk'))
str_utf8 = str_test.encode('utf8')
print(str_utf8.decode('utf8'))

写在最后,欢迎关注公众号【头发头发等等我】

另外,建了个微信群,除了打广告,什么都可以聊

字符(串)转换ASCII码相关推荐

  1. c语言 字符转换成ascii吗,C语言字符转换ASCII码

    //函 数 名:CharToHex() //功能描述:把ASCII字符转换为16进制 //函数说明: //调用函数: //全局变量: //输    入:ASCII字符 //返    回:16进制 / ...

  2. js: 字符(字母) 与 ASCII码 转换方法

    js: 字符(字母) 与 ASCII码 转换方法 字母ASCII码值 大写字母 : A-Z 65-90 小写字母 : a-z 97-122 ##字符 与 ASCII码值 之间的转换 // 字符 -&g ...

  3. 一键转换ASCII码

    //-----一键转换ASCII码----- #include <iostream> #include <string> using namespace std; int ma ...

  4. c语言大小写字母相互转化,字母大小写互相转换 ASCII码转化符号问题

    字母大小写互相转换 ASCII码转化符号问题 请问在c语言中 字母大小写互相转换怎么编写? 请问为什么 #include void main() { char a,c; int b; printf(& ...

  5. python面试题-输入一个由n个大小写字母组成的字符,按Ascii码值从小到大排序,查找字符串中第k个最小Ascii码值的字母

    题目: 输入一个由n个大小写字母组成的字符,按Ascii码值从小到大排序,查找字符串中第k个最小Ascii码值的字母(k>=1) 输入要求: 第一行输入大小写组成的字符串 第二行输入k, k必须 ...

  6. ACM试题 - ASCII码排序 - Java中字符与对应ASCII码的转换

    Java中字符转换对应ASCII码有两种方式: 第一种: char c = 'a'; byte b = (byte)c; // b=97 第二种: char c = 'a'; int b = c; / ...

  7. 字符编码(ASCII码、音码、形码、区位码,国标码、机内码,字形码)

    1.西文字符编码   ASCII(美国信息交换标准代码)字符编码,该编码标准已经被国际标准化组织(ISO)指定为国际标准,是国际上使用最广泛的一种字符编码.标准的ASCII码采用二进制编码,他可以表示 ...

  8. C语言查询ask码的函数,ask码(字符转成ascii码)

    什么是askll码?我刚学C语言,什么都不懂,知道的朋友可以详细的叙述下好. 是ascii码,不是askll码.ascll 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难.因此计算机上都配 ...

  9. 字符的编码表示——ASCII码、国标码、Unicode码

     ASCII码: 美国信息交换标准代码(American Standard Code for Information Interchange) 其中包括62个英文字母和阿拉伯数字,33个可打印字符,3 ...

  10. 二进制转化成ascll_用java将二进制转换ascii码

    今天玩程序员闯关游戏最后一关,碰到个难题,一大串二进制数要转换成ascii码. 最后想到ASCII码对应的数是十进制数的,可以先把二进制转换成十进制,再强制转换成char类型就好了. 于是用到Inte ...

最新文章

  1. IDEA常用和实用配置以及各种必要插件
  2. 深入理解 Java 虚拟机-如何利用 VisualVM 对高并发项目进行性能分析
  3. VS2010单元测试入门实践教程
  4. [转载] 对称加密与非对称加密
  5. matlab 林智仁,机器学习:林智仁libsvm 工具箱 在matlab下的应用总结
  6. SSM整合时配置文件的编写
  7. 点击回车事件(登录)
  8. python浪漫文艺_Python程序员的文艺之路
  9. @excel 注解_Java中注解学习系列教程-3
  10. springcloud工作笔记094---springcloud项目后端验证_hibernate validator后端校验字段_介绍了解
  11. 7-4 用天平找小球 (10 分)
  12. 【GDB调试学习笔记】GDB查看运行时数据
  13. 黑客帝国代码雨以及其灵活使用——道家真言!!(附带相关知识点)
  14. 【Pix4d精品教程】Pix4d项目空三结果精度评估完整解决方案(建议收藏)
  15. pandas中DataFrame如何检测重复值
  16. ln火线零线_插座怎么接LN线
  17. 有关vista系统的激活工具
  18. 如何用计算机弹奏纸短情长,纸短情长计算器谱
  19. 针对目前windows系统的所有勒索病毒补丁和安全工具
  20. 影响因子,计算机科学,影响因子最高计算机科学期刊(前50种).doc

热门文章

  1. 2009年程序员考试大纲指南
  2. 施耐德 m340 编程手册_PLC模拟量的通用转换原理以及编程方法
  3. 【设计师配色宝典!教你从零开始学配色】转
  4. raspberry pi4B ncnn cpu vulkan benchmark
  5. ArcGIS地理数据处理高级教程_004_1遇到没有地理参照系信息的数据怎么办
  6. 计算机面试 OA 试题及答案,办公自动化题库OA(附答案)
  7. C语言课后练习题第二章
  8. rt3290 linux驱动下载,Ralink RT3290无线网卡驱动安装 (linux)
  9. 台式计算机键盘驱动程序,电脑中使用驱动人生检测不到键盘驱动程序怎么解决...
  10. Bootstrap系列---按钮