一、ASCII码
首先是看得懂ASCII码表:
二 八 十 十六 缩写/字符
0000 0000 0 0 00 NUL(null)
0000 0001 1 1 01 SOH(start of headline)
0000 0010 2 2 02 STX (start of text)
0000 0011 3 3 03 ETX (end of text)
0000 0100 4 4 04 EOT (end of transmission)
0000 0101 5 5 05 ENQ (enquiry)
0000 0110 6 6 06 ACK (acknowledge)
0000 0111 7 7 07 BEL (bell)
0000 1000 10 8 08 BS (backspace)
0000 1001 11 9 09 HT (horizontal tab)
0000 1010 12 10 0A LF
0000 1011 13 11 0B VT (vertical tab)
0000 1100 14 12 0C FF
0000 1101 15 13 0D CR (carriage return)
0000 1110 16 14 0E SO (shift out)
0000 1111 17 15 0F SI (shift in)
0001 0000 20 16 10 DLE (data link escape)
0001 0001 21 17 11 DC1 (device control 1)
0001 0010 22 18 12 DC2 (device control 2)
0001 0011 23 19 13 DC3 (device control 3)
0001 0100 24 20 14 DC4 (device control 4)
0001 0101 25 21 15 NAK
0001 0110 26 22 16 SYN (synchronous idle)
0001 0111 27 23 17 ETB (end of trans. block)
0001 1000 30 24 18 CAN (cancel)
0001 1001 31 25 19 EM (end of medium)
0001 1010 32 26 1A SUB (substitute)
0001 1011 33 27 1B ESC (escape)
0001 1100 34 28 1C FS (file separator)
0001 1101 35 29 1D GS (group separator)
0001 1110 36 30 1E RS (record separator)
0001 1111 37 31 1F US (unit separator)
0010 0000 40 32 20 (space)
0010 0001 41 33 21 !
0010 0010 42 34 22 "
0010 0011 43 35 23 #
0010 0100 44 36 24 $
0010 0101 45 37 25 %
0010 0110 46 38 26 &
0010 0111 47 39 27 '
0010 1000 50 40 28 (
0010 1001 51 41 29 )
0010 1010 52 42 2A *
0010 1011 53 43 2B +
0010 1100 54 44 2C ,
0010 1101 55 45 2D -
0010 1110 56 46 2E .
00101111 57 47 2F /
00110000 60 48 30 0
00110001 61 49 31 1
00110010 62 50 32 2
00110011 63 51 33 3
00110100 64 52 34 4
00110101 65 53 35 5
00110110 66 54 36 6
00110111 67 55 37 7
00111000 70 56 38 8
00111001 71 57 39 9
00111010 72 58 3A :
00111011 73 59 3B ;
00111100 74 60 3C <
00111101 75 61 3D =
00111110 76 62 3E >
00111111 77 63 3F ?
01000000 100 64 40 @
01000001 101 65 41 A
01000010 102 66 42 B
01000011 103 67 43 C
01000100 104 68 44 D
01000101 105 69 45 E
01000110 106 70 46 F
01000111 107 71 47 G
01001000 110 72 48 H
01001001 111 73 49 I
01001010 112 74 4A J
01001011 113 75 4B K
01001100 114 76 4C L
01001101 115 77 4D M
01001110 116 78 4E N
01001111 117 79 4F O
01010000 120 80 50 P
01010001 121 81 51 Q
01010010 122 82 52 R
01010011 123 83 53 S
01010100 124 84 54 T
01010101 125 85 55 U
01010110 126 86 56 V
01010111 127 87 57 W
01011000 130 88 58 X
01011001 131 89 59 Y
01011010 132 90 5A Z
01011011 133 91 5B [
01011100 134 92 5C
01011101 135 93 5D ]
01011110 136 94 5E ^
01011111 137 95 5F _
01100000 140 96 60 `
01100001 141 97 61 a
01100010 142 98 62 b
01100011 143 99 63 c
01100100 144 100 64 d
01100101 145 101 65 e
01100110 146 102 66 f
01100111 147 103 67 g
01101000 150 104 68 h
01101001 151 105 69 i
01101010 152 106 6A j
01101011 153 107 6B k
01101100 154 108 6C l
01101101 155 109 6D m
01101110 156 110 6E n
01101111 157 111 6F o
01110000 160 112 70 p
01110001 161 113 71 q
01110010 162 114 72 r
01110011 163 115 73 s
01110100 164 116 74 t
01110101 165 117 75 u
01110110 166 118 76 v
01110111 167 119 77 w
01111000 170 120 78 x
01111001 171 121 79 y
01111010 172 122 7A z
01111011 173 123 7B {
01111100 174 124 7C |
01111101 175 125 7D }
01111110 176 126 7E ~
01111111 177 127 7F DEL(delete)
在表中查找出英文字母ABCDEFGHIJKLMNOPQRSTUVWXYZ相对应的十六进制数值为:
41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 51 52 53 54 55 56 57 58 5a
vim test1.txt
%!xxd
%!xxd -r
:wq
cat test1.txt
结果:
二、gb2312编码
gb2312相关编码:http://doc.chacuo.net/gb2312
在进行vim编辑的时候,首先将终端的编码方式修改为gb2312,在终端上面的终端选项中进行修改,如下图所示:
修改之后使用命令locale -a|grep zh_CN查看当前拥有的中文字符集:
如果没有gb2312,则使用命令sudo locale-gen zh_CN安装字符集。这样的话,cat打印的东西就不是乱码了。如果vi进去后还是乱码,可以用export LANG=zh_CN.gb2312就可以啦~
vim test2.txt
%!xxd
%!xxd -r
:wq
cat test1.txt
结果:(若将终端编码方式修改为unicode(UTF-8),则按gb2312编码的字符则为乱码)
三、utf—8编码
utf—8的相关编码:http://www.cr173.com/html/11686_all.html
将刚才修改过的终端编码方式更改为unicode。
vim test3.txt
%!xxd
%!xxd -r
:wq
cat test3.txt
结果: