字符编码

初学者对ASCII编码、Unicode编码、UTF-8编码的理解

不打扰是莪最后的温柔 提交于 2019-12-18 09:49:25
最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是 255(二进制 11111111=十进制 255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是 65535,4个字节可以表示的最大整数是4294967295。 最早只有 127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为 ASCII 编码,比如大写字母 A 的编码是65,小写字母 z 的编码是 122。没有其他的语言编码。 Unicode编码就是把所有语言都统一到一套编码里,这样在遇到同的语言时就不会再有乱码问题了。 Unicode 标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持 Unicode 。 ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。 UTF-8编码是一种“可变长编码”,它把一个Unicode 字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。 下面总结一下现在计算机系统通用的字符编码工作方式:

linux字体,bashrc的问题的解决

非 Y 不嫁゛ 提交于 2019-12-18 02:32:12
0、查看文件 :set ff #查看文件类型 这里是fileformat=unix :set ff=dos 设置为dos模式, 也可以用 sed -i 's/$/\r/' :set ff=unix 设置为unix模式,也可以用一下方式转换为unix模式:sed -i 's/.$//g' :set fileencoding #查看现在文本的编码 :set fenc=编码 #转换当前文本的编码为指定的编码 :set enc=编码 #以指定的编码显示文本,但不保存到文件中。 1、打开vim,查看文件的编码方式 :set fileencoding 2、因为不知道什么原因,~/.bashrc中编码方式发生了变化 中文字符都乱掉了 查看编码方式,发现不知道为什么变成了latin1 后来网上查到:vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。 1)encoding encoding是Vim内部使用的字符编码方式。当我们设置了encoding之后。Vim内部全部的buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的时候。假设编码方式与它的内部编码不一致,它会先把编码转换成内部编码。假设工作用的编码中含有无法转换为内部编码的字符

SQL数据类型

被刻印的时光 ゝ 提交于 2019-12-17 12:25:59
数据类型 类型 描 述 bit 整型 bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Off int 整型 int 数据类型可以存储从- 2 31 (-2147483648)到2 31 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节 smallint 整型 smallint 数据类型可以存储从- 2 15 (-32768)到2 15 (32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间 tinyint 整型 tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节 numeric 精确数值型 numeric数据类型与decimal 型相同 decimal 精确数值型 decimal 数据类型能用来存储从-10 38 -1到10 38 -1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数 money 货币型 money 数据类型用来表示钱和货币值

ASCII、Unicode和UTF-8

烂漫一生 提交于 2019-12-17 09:26:17
转自廖雪峰的官方网站:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000 字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是 65535 ,4个字节可以表示的最大整数是 4294967295 。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为 ASCII 编码,比如大写字母 A 的编码是 65 ,小写字母 z 的编码是 122 。 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了 GB2312 编码,用来把中文编进去。 你可以想得到的是,全世界有上百种语言,日本把日文编到 Shift_JIS 里

字符集、编码

和自甴很熟 提交于 2019-12-17 01:07:59
  说到编码,你会想到什么?你想到的可能是gb2312、gbk、utf-8、unicode、ansi、ascii,你还会想到项目中常常碰到的汉字乱码问题,编辑器里面的汉字便乱码了?浏览器便乱码了?怎么回事?是不是一通捣鼓之后又不乱了,下次碰到的时候,有是一通捣鼓?还会想到什么?java代码点?windows代码页?好多软件有unicode版本?unicode版本是怎么回事?多语言版本?国际化?。。。   一提到编码,想必这些概念会在你脑子里乱窜。该是理清一下的时候了! 字符集 字符长度(位) 说明 ASCII 7 0-127,0x20 ASCII扩展字符集 8 128-255 GB2312 8+8 (0xA1-->0xFE)(0xa1-->0xFE) ,全角(双字节版的ASCII)、半角(同ASCII) GBK 8+8 (0x80-->0xFE)(0x40-->0xFE),GB2312的扩展 GB18030 8+8 GBK的扩展,增加了新字符 UCS( UNICODE) 8+8 GBK 与UNICODE不兼容 UTF-8、UTF-16 UCS Transfer Format,可以按照一定规则和UCS互相转换 ISO-8859-1 文件的编码:    http://en.wikipedia.org/wiki/Byte_order_mark 参考的文章: http://zh

Modbus 协议

♀尐吖头ヾ 提交于 2019-12-16 22:38:57
转载:https://www.cnblogs.com/DreamRecorder/p/9081127.html 一、Modbus 协议简介   Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。   当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus网络上转输   标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。   控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备

字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码

让人想犯罪 __ 提交于 2019-12-16 14:39:51
http://www.regexlab.com/zh/encoding.htm 1. 编码问题的由来,相关概念的理解 1.1 字符与编码的发展 从计算机对多国语言的支持角度看,大致可以分为三个阶段:   系统内码 说明 系统 阶段一 ASCII 计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示。 英文 DOS 阶段二 ANSI编码 (本地化) 为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码 。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码 的文本中。 中文 DOS,中文 Windows 95/98,日文 Windows 95/98 阶段三 UNICODE (国际化) 为了使国际间信息交流更加方便,国际组织制定了 UNICODE 字符集 ,为各种语言中的每一个字符设定了统一并且唯一的数字编号

Python基础二

戏子无情 提交于 2019-12-16 13:50:15
一. 格式化输出 现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式 ------------ info of 太白金星 ----------- Name : 太白金星 Age : 22 job : Teacher Hobbie: girl ------------- end ----------------- 你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势 只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦 name = input("Name:") age = input("Age:") job = input("Job:") hobbie = input("Hobbie:") info = ''' ------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name Name : %s #代表 name Age : %s #代表 age job : %s #代表 job Hobbie: %s #代表 hobbie ------------- end ----------------- ''' %(name,name,age,job

字符串和数字之间的转换(Unicode)

旧城冷巷雨未停 提交于 2019-12-16 13:09:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1 Unicode编码的字符串转换为数字类型 CString str; str = _T("1234"); int i = _ttoi(str); float f = _tstof(str); 2 数字转换为wchar_t wchar_t c[10]; int num = 100; _itow_s(num,c,10,10进制); wstring str(c); 3 wstring 转换为int wstring str; _wtoi(str.c_str); 那么究竟什么是Unicode?如何编程呢? UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置: C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE 在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup 反之为MBCS(ANSI)编译。 Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数

面试官问你编码相关的面试题,把这篇甩给他就完事!

自闭症网瘾萝莉.ら 提交于 2019-12-16 09:59:03
前情回顾: Java中一个字符占两字节 但为什么new String("字").getBytes().length 返回3个字节 今天主要聊一聊: 字节 字符 字符集 编码 字符编码 Java 内码和外码 Unicode 字节 例如 :00001111 这个8位二进制数就占了一个字节的存储容量。 字节(英语:Byte),通常用作计算机信息计量单位,不分数据类型。 一个字节代表八个比特(英语:Bit)。这个是最基本的概念了,字节是计算存储容量的一种计量单位,计算机只能识别1和0组成的二进制位。一个数就是1位(bit),为了方便计算,我们规定8位就是一个字节。 例如 :00001111 这个8位二进制数就占了一个字节的存储容量。 字符 字符和字节不太一样,任何一个文字或符号都是一个字符,但所占字节不一定,不同的编码导致一个字符所占的内存不同。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 也就是说,一个数字是一个字符,一个文字是一个字符,一个标点符号也是一个字符。 1 是 字符,“汉” 是字符,“!”感叹号是字符。 字符集   charset 是 character set 的简写,即字符集。字符的集合就叫字符集。ASCII字符集就是下表中的 字符那一列的所有字符的集合 。 编码 编码是一个非常宽泛的概念!虽然我们一直用 编码 特指 字符集编码