← Here 文档 | 编码 →
对我们来说,像 "Hello world" 这样的字符串看起来像是一系列字母,中间有一个空格。 然而,对您的计算机来说,每个字符串——实际上,所有东西——都是一系列数字。
在我们的示例中,字符串 "Hello world" 的每个 字符 都用 0 到 127 之间的数字表示。 例如,对计算机来说,大写字母 "H" 被编码为数字 72,而空格被编码为数字 32。 ASCII 标准最初是为发送 电报 而开发的,它指定了用于表示每个字符的数字。
在大多数类 Unix 操作系统上,您可以在 shell 提示符下键入 "man ascii" 来查看 ASCII 代码的整个图表。 维基百科 关于 ASCII 的页面也列出了 ASCII 代码。 使用 ASCII 图表,我们发现我们的字符串 "Hello world" 被转换为以下一系列 ASCII 代码。
H e l l o space w o r l d
72 101 108 108 111 32 119 111 114 108 100
您也可以使用 Ruby 1.8 中的 ? 运算符来确定字符的 ASCII 代码。
puts ?H
puts ?e
puts ?l
puts ?l
puts ?o
问号语法 在 Ruby 1.9 中不再起作用。 相反,请使用 ord 方法。
puts "H".ord
puts "e".ord
puts "l".ord
puts "l".ord
puts "o".ord
请注意,该程序的输出(如下)与 "Hello world" 的 "Hello" 部分的 ASCII 代码相匹配。
$ hello-ascii.rb
72
101
108
108
111
要获取空格的 ASCII 值,我们需要使用它的 转义序列。 事实上,我们可以使用任何转义序列与 ? 运算符一起使用。
puts ?\s
puts ?\t
puts ?\b
puts ?\a
如上所述,在 Ruby >= 1.9 中使用
puts "\s".ord
puts "\t".ord
puts "\b".ord
puts "\a".ord
代替。
结果
32
9
8
7
您可能没有意识到,到目前为止,您一直在一个名为终端模拟器的程序中运行您的 Ruby 程序——例如 Microsoft Windows 控制台,Mac OS X 终端 应用程序,telnet 客户端,rxvt 或 X Window System 程序,如 xterm。
当您的 Ruby 程序打印字母 "H" 时,它会将 "H" (72) 的 ASCII 代码发送到终端模拟器,然后终端模拟器会绘制一个 "H"。 当您的 Ruby 程序打印一个 响铃字符 时,它会将另一个 ASCII 代码——ASCII 代码 7——发送到终端模拟器。 在这种情况下,终端模拟器不会绘制符号,而是通常会 发出哔哔声 或短暂闪烁。 每种代码如何解释在很大程度上取决于 ASCII 标准。
ASCII 标准是一种 字符编码。 如上所述,ASCII 仅使用数字 0 到 127 来定义字符。 世界上还有很多其他字符。 其他字符编码系统——例如 Latin-1,Shift_JIS 和 Unicode 转换格式 (UTF)——已经创建,以表示更广泛的字符,包括在 阿拉伯语、希伯来语、汉语 和 日语 等语言中找到的字符。
| 二进制 |
八进制 |
十进制 |
十六进制 |
字形 |
| 010 0000 |
040 |
32 |
20 |
?
|
| 010 0001 |
041 |
33 |
21 |
!
|
| 010 0010 |
042 |
34 |
22 |
"
|
| 010 0011 |
043 |
35 |
23 |
#
|
| 010 0100 |
044 |
36 |
24 |
$
|
| 010 0101 |
045 |
37 |
25 |
%
|
| 010 0110 |
046 |
38 |
26 |
&
|
| 010 0111 |
047 |
39 |
27 |
'
|
| 010 1000 |
050 |
40 |
28 |
(
|
| 010 1001 |
051 |
41 |
29 |
)
|
| 010 1010 |
052 |
42 |
2A |
*
|
| 010 1011 |
053 |
43 |
2B |
+
|
| 010 1100 |
054 |
44 |
2C |
,
|
| 010 1101 |
055 |
45 |
2D |
-
|
| 010 1110 |
056 |
46 |
2E |
.
|
| 010 1111 |
057 |
47 |
2F |
/
|
| 011 0000 |
060 |
48 |
30 |
0
|
| 011 0001 |
061 |
49 |
31 |
1
|
| 011 0010 |
062 |
50 |
32 |
2
|
| 011 0011 |
063 |
51 |
33 |
3
|
| 011 0100 |
064 |
52 |
34 |
4
|
| 011 0101 |
065 |
53 |
35 |
5
|
| 011 0110 |
066 |
54 |
36 |
6
|
| 011 0111 |
067 |
55 |
37 |
7
|
| 011 1000 |
070 |
56 |
38 |
8
|
| 011 1001 |
071 |
57 |
39 |
9
|
| 011 1010 |
072 |
58 |
3A |
:
|
| 011 1011 |
073 |
59 |
3B |
;
|
| 011 1100 |
074 |
60 |
3C |
<
|
| 011 1101 |
075 |
61 |
3D |
=
|
| 011 1110 |
076 |
62 |
3E |
>
|
| 011 1111 |
077 |
63 |
3F |
?
|
|
| 二进制 |
八进制 |
十进制 |
十六进制 |
字形 |
| 100 0000 |
100 |
64 |
40 |
@
|
| 100 0001 |
101 |
65 |
41 |
A
|
| 100 0010 |
102 |
66 |
42 |
B
|
| 100 0011 |
103 |
67 |
43 |
C
|
| 100 0100 |
104 |
68 |
44 |
D
|
| 100 0101 |
105 |
69 |
45 |
E
|
| 100 0110 |
106 |
70 |
46 |
F
|
| 100 0111 |
107 |
71 |
47 |
G
|
| 100 1000 |
110 |
72 |
48 |
H
|
| 100 1001 |
111 |
73 |
49 |
I
|
| 100 1010 |
112 |
74 |
4A |
J
|
| 100 1011 |
113 |
75 |
4B |
K
|
| 100 1100 |
114 |
76 |
4C |
L
|
| 100 1101 |
115 |
77 |
4D |
M
|
| 100 1110 |
116 |
78 |
4E |
N
|
| 100 1111 |
117 |
79 |
4F |
O
|
| 101 0000 |
120 |
80 |
50 |
P
|
| 101 0001 |
121 |
81 |
51 |
Q
|
| 101 0010 |
122 |
82 |
52 |
R
|
| 101 0011 |
123 |
83 |
53 |
S
|
| 101 0100 |
124 |
84 |
54 |
T
|
| 101 0101 |
125 |
85 |
55 |
U
|
| 101 0110 |
126 |
86 |
56 |
V
|
| 101 0111 |
127 |
87 |
57 |
W
|
| 101 1000 |
130 |
88 |
58 |
X
|
| 101 1001 |
131 |
89 |
59 |
Y
|
| 101 1010 |
132 |
90 |
5A |
Z
|
| 101 1011 |
133 |
91 |
5B |
[
|
| 101 1100 |
134 |
92 |
5C |
\
|
| 101 1101 |
135 |
93 |
5D |
]
|
| 101 1110 |
136 |
94 |
5E |
^
|
| 101 1111 |
137 |
95 |
5F |
_
|
|
| 二进制 |
八进制 |
十进制 |
十六进制 |
字形 |
| 110 0000 |
140 |
96 |
60 |
`
|
| 110 0001 |
141 |
97 |
61 |
a
|
| 110 0010 |
142 |
98 |
62 |
b
|
| 110 0011 |
143 |
99 |
63 |
c
|
| 110 0100 |
144 |
100 |
64 |
d
|
| 110 0101 |
145 |
101 |
65 |
e
|
| 110 0110 |
146 |
102 |
66 |
f
|
| 110 0111 |
147 |
103 |
67 |
g
|
| 110 1000 |
150 |
104 |
68 |
h
|
| 110 1001 |
151 |
105 |
69 |
i
|
| 110 1010 |
152 |
106 |
6A |
j
|
| 110 1011 |
153 |
107 |
6B |
k
|
| 110 1100 |
154 |
108 |
6C |
l
|
| 110 1101 |
155 |
109 |
6D |
m
|
| 110 1110 |
156 |
110 |
6E |
n
|
| 110 1111 |
157 |
111 |
6F |
o
|
| 111 0000 |
160 |
112 |
70 |
p
|
| 111 0001 |
161 |
113 |
71 |
q
|
| 111 0010 |
162 |
114 |
72 |
r
|
| 111 0011 |
163 |
115 |
73 |
s
|
| 111 0100 |
164 |
116 |
74 |
t
|
| 111 0101 |
165 |
117 |
75 |
u
|
| 111 0110 |
166 |
118 |
76 |
v
|
| 111 0111 |
167 |
119 |
77 |
w
|
| 111 1000 |
170 |
120 |
78 |
x
|
| 111 1001 |
171 |
121 |
79 |
y
|
| 111 1010 |
172 |
122 |
7A |
z
|
| 111 1011 |
173 |
123 |
7B |
{
|
| 111 1100 |
174 |
124 |
7C |
|
|
| 111 1101 |
175 |
125 |
7D |
}
|
| 111 1110 |
176 |
126 |
7E |
~
|
|