Ruby 数据类型与对象深度解析
1. 字符串编码转换
在处理字符串编码转换时,如果调用 encode 方法的字符串由未编码的字节组成,就需要在将其转换为其他编码之前,指定用于解释这些字节的编码。具体做法是向 encode 方法传递两个参数,第一个参数是目标编码,第二个参数是字符串的当前编码。例如:
# 将一个字节解释为 iso - 8859 - 15 码点,并转换为 UTF - 8
byte = "\xA4"
char = byte.encode("utf-8", "iso-8859-15")
以下两行代码具有相同的效果:
text = bytes.encode(to, from)
text = bytes.dup.force_encoding(from).encode(to)
如果调用 encode 方法时不传递任何参数,若使用 -E 或 -U 解释器选项设置了默认内部编码,它会将接收的字符串转换为该默认内部编码。这使得库模块等可以将其公共字符串常量转换为通用编码,以实现互操作性。
不同的字符编码不仅在字节到字符的映射上有所不同,而且在所能表示的字符集方面也存在差异。Unicode(也称为 UCS - 通用字符集)试图包含所有字符,但非基于 Unicode 的字符编码只能表示字符的一个子集。因此,并非所有的 UTF -
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



