最近我一直在使用Ruby chr
和ord
方法,但有一些内容我不明白。试图了解Ruby .chr和.ord方法
我目前的项目涉及将单个字符转换为序数值和从序数值转换。据我了解,如果我有一个字符串与个人字符,如“A”,我打电话ord
我得到它的位置在65的ASCII表格。调用相反,65.chr
给我的字符值“A”,所以这告诉我Ruby有一个集合在有序字符值的地方,它可以使用这个集合给我一个特定字符的位置,或者在特定位置的字符。我可能是错的,请纠正我,如果我。
现在我也明白Ruby的默认字符编码使用UTF-8,因此它可以处理数千个可能的字符。因此,如果我问它是这样的:
'好'.ord
我得到这个角色是22909.不过的位置,如果我叫chr
该值:
22909.chr
我得到“的RangeError: 22909 out of char range。“我只能得到char
以处理扩展ASCII的255值。所以我的问题是:
- 为什么红宝石似乎是从扩展ASCII字符为得到值
chr
设置,但是从UTF-8ord
? - 有什么办法可以让Ruby在使用这些方法时使用不同的编码?例如,告诉它使用ASCII-8BIT编码,而不是默认的任何东西?
- 如果可以更改默认编码,是否有任何方法可以获取正在使用的集合中可用的字符总数?
http://apidock.com/ruby/Integer/chr提到你可以使用像''22909.chr(Encoding :: UTF_8)''。如果你想使用它,编码也有''Encoding :: ASCII_8BIT''。 –
@NabeelAmjad您应该将其作为答案发布。 –
这是非常有用的,我没有看到,这让我走了很长的路要走到哪里。现在,我唯一缺少的就是获取可用于特定编码的字符数的简单方法。例如ASCII_8BIT有256个字符,UTF_8约为1。100万等。是的,请张贴它作为答案。 –