字符编码

C++实现base64编码解码

亡梦爱人 提交于 2020-02-17 06:34:50
base64编码是将 3个字符 (共 24位 2进制)分成一组,然后 每6位 2进制编成一个新的字符。 也就是 3 x 8 = 6 x 4 。 6位2进制可以表示2的6次方个数,也就是64个,所以叫base64编码。 贴一张base64编码表, 由A-Z、a-z、0-9、+、/共64个字符组成 需要注意的是, base64编码后的长度一定是4的倍数。 当需要转换的字符个数正好是3的倍数时,可以直接转换, 转换后的长度为len(str)/3 x 4 当字符个数为除3余1时,前面按照常规,多出那一个字符就需要在后面补0(2进制),表示出2个base64字符,然后剩下两个用=填充。 当字符个数为除3余2时,前面按照常规,多出那两个字符就需要在后面补0(2进制), 表示出3个base64字符,然后剩下两个用=填充。 C++实现base64编码解码 # include <iostream> # include <cstdio> # include <cstdlib> # include <cstring> # include <algorithm> using namespace std ; string base64_encode ( string str ) { string base64_table =

ORACLE字符集基础知识

拥有回忆 提交于 2020-02-16 21:20:30
ORACLE字符集基础知识 https://www.cnblogs.com/kerrycode/p/3749085.html 概念描叙 ORACLE数据库有国家字符集(national character set)与数据库字符集(database character set)之分。两者都是在创建数据库时需要设置的。国家字符集主要是用于NCHAR、NVARCHAR、NCLOB类型的字段数据,而数据库字符集使用很广泛,它用于:CHAR、VARCHAR、CLOB、LONG类型的字段数据; ORACLE的字符集名字一般由以下部分组成:语言或区域、表示一个字符的比特位数、标准字符集名称(可选项,S或C,表示服务器或客户端)。ORACLE字符集UTF8与UTFE不符合此规定,其它基本都是这种格式。NLS_LANG=<Language>_<Territory>.<Clients Characterset> set nls_lang=AMERICAN_AMERICA.UTF8 set nls_lang=SIMPLIFIED CHINESE_AMERICA.UTF8 NLS( National Language Support)国家语言支持。NLS是数据库的一个非常强大的特性,它控制着数据的许多方面:比如数据如何存储,一般来说它控制着以下两个方面: 文本数据持久存储在磁盘上时如何编码

计算机基础(6)

∥☆過路亽.° 提交于 2020-02-16 21:20:11
下面是莫尔斯编码的 示例 ,大家把 1 看作是短点(嘀),把 11 看作是长点(嗒)即可。 莫尔斯编码一般把文本中出现最高频率的字符用 短编码 来表示。如表所示,假如表示短点的位是 1,表示长点的位是 11 的话,那么 E(嘀)这一数据的字符就可以用 1 来表示,C(滴答滴答)就可以用 9 位的 110101101 来表示。在实际的莫尔斯编码中,如果短点的长度是 1 ,长点的长度就是 3,短点和长点的间隔就是1。这里的长度指的就是声音的长度。比如我们想用上面的 AAAAAABBCDDEEEEEF 例子来用莫尔斯编码重写,在莫尔斯曼编码中,各个字符之间需要加入表示时间间隔的符号。这里我们用 00 加以区分。 所以,AAAAAABBCDDEEEEEF 这个文本就变为了 A * 6 次 + B * 2次 + C * 1次 + D * 2次 + E * 5次 + F * 1次 + 字符间隔 * 16 = 4 位 * 6次 + 8 位 * 2次 + 9 位 * 1 次 + 6位 * 2次 + 1位 * 5次 + 8 位 * 1次 + 2位 * 16次 = 106位 = 14字节。 所以使用莫尔斯电码的压缩比为 14 / 17 = 82% 。效率并不太突出。 用二叉树实现哈夫曼算法 刚才已经提到,莫尔斯编码是根据日常文本中各字符的出现频率来决定表示各字符的编码数据长度的。不过,在该编码体系中

8、mysql乱码问题及字符集实战

僤鯓⒐⒋嵵緔 提交于 2020-02-16 11:34:15
8.1、mysql插入中文数据乱码案例: mysql建库的字符集为latin1,客户端的字符集为utf8; use lc; 1、查看库的编码: mysql> show create database lc\G; *************************** 1. row *************************** Database: lc Create Database: CREATE DATABASE `lc` /*!40100 DEFAULT CHARACTER SET latin1 */ 2、查看表的编码: 表的字符集默认是根据库来的; mysql> show create table test\G; *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL COMMENT '姓名', `age` varchar(2) DEFAULT NULL COMMENT '年龄', PRIMARY KEY (`id`), KEY `index_name` (`name`) )

8.4、数据库编码(永久生效)

一世执手 提交于 2020-02-16 11:33:29
1、查看mysql的建库编码语言: mysql> show create database lc\G; *************************** 1. row *************************** Database: lc Create Database: CREATE DATABASE `lc` /*!40100 DEFAULT CHARACTER SET latin1 */ #创建的数据库的字符编码集是拉丁文; 1 row in set (0.00 sec) ERROR: No query specified 2、如何在创建mysql数据库时指定字符集: (1)指定创建数据库为gbk的字符集; mysql> create database lc1 default character set gbk collate gbk_chinese_ci ; Query OK, 1 row affected (0.00 sec) mysql> show create database lc1\G; *************************** 1. row *************************** Database: lc1 Create Database: CREATE DATABASE `lc1` /*!40100 DEFAULT

javaSE学习笔记(15) ---缓冲流、转换流、序列化流

冷暖自知 提交于 2020-02-15 23:46:31
javaSE学习笔记(15) ---缓冲流、转换流、序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,相当于是对基本流对象的一种增强。 概述 缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流 : BufferedInputStream , BufferedOutputStream 字符缓冲流 : BufferedReader , BufferedWriter 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。 字节缓冲流 构造方法 public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。 public BufferedOutputStream(OutputStream out) : 创建一个新的缓冲输出流。 构造举例,代码如下: // 创建字节缓冲输入流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt"

深入理解python(三)python字符编码和字符串处理

大城市里の小女人 提交于 2020-02-15 18:47:56
说是有选择和循环分支,,也实在没有什么比较大的坑要注意的,所以就直接进入比较令人困扰的地方 unicode和字符串 这个地方是一直以来我比较头痛的地方,因为坑比较多而且python3和python2在编码和解码方面有着很大的差异,所以我尽量按照自己的理解写一遍,如果有谬误望不吝赐教。 先安利一个资料 https://docs.python.org/2/library/re.html 这里讲解的比较详尽 先来谈谈对编码的理解吧 首先我们要明析两个东西 1.unicode 2.编码方式 这里借一篇文章中的一段话来解释,原文讲的很清晰,建议大家去看一看: https://pycoders-weekly-chinese.readthedocs.io/en/latest/issue5/unipain.html 我们从 Unicode 基本知识开始。 事实之一:计算机中的一切均为 bytes(字节)。硬盘中的文件为一系列的 byte 组成,网络中传输的只有 byte。所有的信息,在你写的程序中进进出出的,均由 byte 组成。 孤立的 byte 是毫无意义的,所以我们来赋予它们含义。 为了表示各种文字,我们有大约 50 年的时间都在用 ASCII 码。每一个 byte 被赋予 95 种符号的一种,所以,当我给你发送 byte 值为 65 的时候,你知道我想表达一个大写的 A。 ISO

【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)

和自甴很熟 提交于 2020-02-15 08:54:32
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要) 本章节主要为大家讲解ASCII字符集,ASCII扩展字符集,GB2312字符集,GBK字符集和Unicode字符集。其中,字符编码这块涉及到的知识点非常多,特别是Unicode字符集的编码,涉及到的知识点极其多。大家如果有精力的话,最好可以花点时间把Unicode的发展史捋清楚了。本章节笔者能够做的是把相关的知识点告诉大家,让大家有一个全面的认识。 52.1 初学者重要提示 52.2 编码基础知识 52.3 汉字点阵原理 52.4 总结 52.1 初学者重要提示 本章节讲解的GB2312和GBK比较容易理解,而Unicode是全球统一码,所以涉及到的知识点比较多,也复杂些。 当前Windows系统字符管理已经全部采用Unicode字符集,编码形式是UTF-16 LE (LE表示小端格式)编码。比如我们通过记事本保存的时候选择编码类型Unicode,其实就是选择的UTF-16 LE。而我们平时所说的中文版Windows系统是指用户在选择不支持Unicode的程序中显示文本时所使用的语言。 区分清楚什么是字符,字符集。字符(Character)是各种文字和符号的总称,包括各国家文字

文件处理

纵然是瞬间 提交于 2020-02-15 05:42:25
目录 一、字符编码 1.1计算机基础   1.2文本编译器存取文件的原理   1.3Python解释器执行py文件的原理   1.4 Python解释器与文本编译的异同   1.5 字符编码介绍     1.5.1 什么是字符编码     1.5.2 涉及到字符编码的两个场景     1.5.3 字符编码发展史与分类     1.5.4内存为什么不用UTF-8呢?     1.5.5 字符编码之文本编译器操作     1.5.6 乱码分析   1.6总结 二、Python2和3字符编码的区别   2、1 字符编码应用之Python   2、1、1 执行Python程序的三个阶段   2、2 Python2与Python3字符串类型的区别   2、2、1 Python2 三、 基本的文件操作   3、1 什么是文件?   3、2 为什么要有文件?   3、3 如何用文件?   3、4 总结 四、绝对路径和相对路径   4、1 绝对路径   4、2 相对路径 五、文件的三种打开方式   5、1 文件打开模式之r模式   5、2 文件打开模式之w模式   5、3 文件打开模式之a模式   5、4 文件打开读取二进 六、with管理文件操作上下文 七、文件的高级应用 八、文件修改的两种方式   8、1 方式一   8、2 方式二 一、字符编码 1.1计算机基础 CPU:控制程序的运行

UTF8最好不要带BOM

[亡魂溺海] 提交于 2020-02-14 23:12:40
摘自: http://www.cnblogs.com/findumars/p/3620078.html 几周前还在为BOM的问题苦恼着。。。 正如@梁海所说,“不含 BOM 的 UTF-8 才是标准形式”,的确是这样,无BOM使用得更多些,所以个人还是推荐一般情况下用无BOM的形式吧,除非有问题的时候,再考虑换有BOM的。Windows系统保存的都是有BOM的,所以你可以看到,用记事本保存一个UTF-8的txt,其实是有BOM的,这一点需要注意。另外不同的文本编辑器对于有无BOM的称呼也略有不同,比如EditPlus,有BOM的称为UTF-8+,无BOM的称为UTF-8,而在Notepad++中,有BOM的被称为标准UTF-8,而无BOM则被称为UTF-8无BOM。 UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。 所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。 BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII