编码转换

vim 文件编码设置

时间秒杀一切 提交于 2020-03-01 13:32:01
1.相关基础知识介绍 在Vim中,有四个与编码有关的选项,它们是:fileencodings、fileencoding、encoding和termencoding。在实际使用中,任何一个选项出现错误,都会导致出现乱码。因此,每一个Vim用户都应该明确这四个选项的含义。下面,我们详细介绍一下这四个选项的含义和作用。 (1)encoding encoding是Vim内部使用的字符编码方式。当我们设置了encoding之后,Vim内部所有的buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的时候,如果编码方式与它的内部编码不一致,它会先把编码转换成内部编码。如果工作用的编码中含有无法转换为内部编码的字符,在这些字符就会丢失。因此,在选择 Vim 的内部编码的时候,一定要使用一种表现能力足够强的编码,以免影响正常工作。 由于encoding选项涉及到Vim中所有字符的内部表示,因此只能在Vim启动的时候设置一次。在Vim工作过程中修改encoding会造成非常多的问题。用户手册上建议只在 .vimrc中改变它的值,事实上似乎也只有在 .vimrc中改变它的值才有意义。如果没有特别的理由,请始终将encoding设置为utf-8。为了避免在非UTF-8的系统如Windows下,菜单和系统提示出现乱码,可同时做这几项设置: set encoding=utf-8 set

java中字符与字节的编码关系

依然范特西╮ 提交于 2020-03-01 13:10:44
一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个 汉字 字符存储需要2个 字节 。 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储 都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。 其次还要知道一点常识,就是我们在记事本等一些文本工具中 写的都是字符,没有谁会去写字节(可以写字节,但是要用具特殊的编辑器), 但是其实,我们的写的是字符,但磁盘上真实存储的是字节。 这里就出现了转换的问题,当然,这些问题记事本本身会帮助我们解决。我们打开一个记事本,然后文件--另存为,你会发现有几种存储格式供您选择, ANSI格式:就是ascii的格式 Unicode格式:采用国际通用的编码存储 Unicode big endian格式:这个和unicode有点区别,但我也不明太具体的不同 UTF-8:采用utf-8存储,看过上面的两篇文章,你会十分的了解这里介绍的编码。Utf-8,是unicode的一种实现方式。 例如我们在记事本里面输入“连通”两个字。 1.我们另存记事本的时候,采用unicode存储,那么虽然我们看到的字符还是“连通”,但是其实存储在磁盘上的字节 确实 8FDE(连)

JAVA的字符编码及问题

做~自己de王妃 提交于 2020-02-29 22:15:50
  web开发时,字符编码及有时候也会是一个麻烦的问题,没有经验的话,肯定不知道怎么解决,有一定的经验的话,那还是比较简单的。以下,是我学习过程中总结出来的几种字符编码级问题和其解决的方法   1.文档乱码,JAVA文件的乱码,如果是在系统中打开,那应该是因为你的JAVA文件的字符编码及和系统的字符编码及不一致,用带转换功能的编辑器转化一下就好了,比如Notepad++就是一个你轻便的工具,建议大家使用。如果在eclipse中打开,那么可能是ecplise的编码及和与文件的编码及不一致,一般eclipse的初始化编码及是和系统保持一致的,在window下即GBK,可以设置eclipse相应的编码及解决问题,以下演示eclipse中解决字符编码及问题   控制台乱码,项目下右击--->Properties--->Resouce中设置编码级   文件乱码, 文件下右击--->Properties--->Resouce中设置编码级   有种简便的方法,更改eclipse的默认编码级配置   window---->Preference---->General---->Content Types 就可以看见你要设置的哪种类型(后缀)文件的默认编码级了,如果需要设置 JAVA源文件 和 JSP文件的默认编码级, Text--->Java Source File 下方Default

六、字符编码、文件

落花浮王杯 提交于 2020-02-29 19:44:48
一、字符编码 1. 计算机系统分为三层:   应用软件   操作系统   硬件 2. 文本编辑器读一个文件的三个过程:   1. 先启动文本编辑器   2. 文件编辑器会将文件内容读入内存   3. 将读入内存的内容显示到屏幕上 Cpython解释器执行一个py文件的三个过程:   1. 先启动python解释器   2. python解释器会将py文件的内容当中普通的文本内容读入内存   3. 开始解释执行刚刚读入内存的代码,识别python 3. 字符编码 字符编码指的是字符转换成/编码成数字 编码的过程一定要遵循一个标准,该标准称之为字符编码表 字符--------编码--------》数字 字符《--------解码--------数字 1. ASCII表:只能识别英文字符,用8bit对应一个英文字符   1个英文字符====>1Bytes 2. GBK表:可以识别中文字符、英文字符,用8bit对应一个英文字符,用16个bit对应一个中文字符     1个英文字符====>1Bytes     1个中文字符====>2Bytes 3. unicode(内存中默认使用该编码):用2Bytes表示一个字符   1. 可以识别万国字符   2. 与各种字符编码的二进制数字都有对应关系 4. utf-8全称Unicode Transformation Format:  

加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较

末鹿安然 提交于 2020-02-29 17:15:20
转载自:http://www.cnblogs.com/sochishun/p/7028056.html 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 加密技术通常分为两大类:"对称式"和"非对称式"。 对称性加密算法: 对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。 非对称算法: 非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A发送消息时为同样的道理。 散列算法: 散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名。 对称性加密算法有

Base64编码及其作用

只愿长相守 提交于 2020-02-29 11:53:32
Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。它使用下面表中所使用的字符与编码。 而且base64特别适合在http,mime协议下快速传输数据。 base64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。 来源: oschina 链接: https://my.oschina.net/u/436370/blog/663910

转:git windows中文 乱码问题解决汇总

依然范特西╮ 提交于 2020-02-27 12:30:05
it的Windows版本Msysgit对中文的支持不够好 。 当使用时,会出现以下三种情况的中文乱码: 下面的几个文件都在git安装目录下文件夹etc内。 1.ls不能显示中文目录 解决办法:在git/git-completion.bash中增加一行: alias ls='ls --show-control-chars --color=auto' 2.git commit不能提交中文注释 (错误类似: D:\versionControlGit\gitLearn>git commit -m "第一次提交README" Warning: commit message does not conform to UTF-8. You may want to amend it after fixing the message, or set the config variable i18n.commitencoding to the encoding your project uses. ) 解 决办法:修改git/inputrc中对应的行: set output-meta on set convert-meta off 3.git log无法显示中文注释 解决办法:在git/profile中增加一行: export LESSCHARSET=iso8859 上面的方法不是很好,一般推荐用utf

Redis数据结构内部编码

試著忘記壹切 提交于 2020-02-27 06:00:02
整体说明 Redis的每一个键值都是使用一个redisObject结构体保存的: typedef struct redisObject { // 类型 unsigned type:4; // 编码 unsigned encoding:4; // 对象最后一次被访问的时间 unsigned lru:REDIS_LRU_BITS; /* lru time (relative to server.lruclock) */ // 引用计数 int refcount; // 指向实际值的指针 void *ptr; } robj; type字段表示数据类型: /* Object types */ #define REDIS_STRING 0 #define REDIS_LIST 1 #define REDIS_SET 2 #define REDIS_ZSET 3 #define REDIS_HASH 4 encoding表示内部编码方式: #define REDIS_ENCODING_RAW 0 /* Raw representation */ #define REDIS_ENCODING_INT 1 /* Encoded as integer */ #define REDIS_ENCODING_HT 2 /* Encoded as hash table */ #define REDIS

Java编程的逻辑 (58) - 文本文件和字符流

╄→гoц情女王★ 提交于 2020-02-26 22:20:15
上节我们介绍了如何以字节流的方式处理文件,我们提到,对于文本文件,字节流没有编码的概念,不能按行处理,使用不太方便,更适合的是使用字符流,本节就来介绍字符流。 我们首先简要介绍下文本文件的基本概念、与二进制文件的区别、编码、以及字符流和字节流的区别,然后我们介绍Java中的主要字符流,它们有: Reader/Writer:字符流的基类,它们是抽象类。 InputStreamReader/OutputStreamWriter:适配器类,输入是InputStream,输出是OutputStream,将字节流转换为字符流。 FileReader/FileWriter:输入源和输出目标是文件的字符流。 CharArrayReader/CharArrayWriter: 输入源和输出目标是char数组的字符流。 StringReader/StringWriter:输入源和输出目标是String的字符流。 BufferedReader/BufferedWriter:装饰类,对输入输出流提供缓冲,以及按行读写功能。 PrintWriter:装饰类,可将基本类型和对象转换为其字符串形式输出的类。 除了这些类,Java中还有一个类Scanner,类似于一个Reader,但不是Reader的子类,可以读取基本类型的字符串形式,类似于PrintWriter的逆操作。 理解了字节流和字符流后

3-8译码器

ぐ巨炮叔叔 提交于 2020-02-26 18:59:39
1、译码 将n位的编码转换为m位的编码,每一个有效的输入编码产生唯一一个输出编码,并且有n≤m≤2n。实现译码功能的电路称为 译码器 。 2、真值表 A2A1A0 D0D1D2D3D4D5D6D7 000 10000000 001 01000000 010 00100000 011 00010000 100 00001000 101 00000100 110 00000010 111 00000001 3、电路图 非层次化设计 层次化设计 4、代码 library ieee; use ieee.std_logic_1164.all; entity threetoeight is port(A:in std_logic_vector(2 downto 0); D:out std_Logic_vector(0 downto 7)); end threetoeight; architecture heihei of threetoeight is signal D1:std_logic_vector(0 downto 7); begin D1<="10000000"when A="000" else "01000000"when A="001" else "00100000"when A="010" else "00010000"when A="011" else "00001000