复选标记字符=“ \ u2713”-打印输出不一致

时间:2019-04-22 21:20:40

标签: ruby unicode unicode-string

行为不一致。

checkmark = "\u2713"
puts checkmark.encode('utf-8')   # this works - prints the 'checkmark' character

2713.upto(2713) {|i|
    puts '\u'.concat(i.to_s)    # this prints \u2713  (instead of expected 'checkmark')
}

在两种情况下-打印复选框字符。

代码:https://tio.run/##TY5NCsIwGET3OcWgi6SLBtSFbrxJQWKa0lBMSvIFFevZY@pPcTcwzHsT0vmes@6NHi4qDDhi1aTtfrNbsTFRxNJI47RvjeCJuvrAKwBrUG8jrj4METXGYF1ZUG/AlxkvBBWUJhMYm7kyjeTFnCo8JjuxAsJbxZvEpfZOKxJWkj/FWfKzfOmfc4CwLpJRLXwHcxtNEbT/2oo9Wc4v

1 个答案:

答案 0 :(得分:3)

在红宝石中,您可以使用chr将字符代码转换为字符

55.chr # => "7"

但是对于ASCII范围以外的代码,这将失败

10003.chr # RangeError (10003 out of char range)
# 10003 is 0x2713 in decimal

在这种情况下,您需要指定编码。

10003.chr(Encoding::UTF_8) # => "✓"

或使用Array#pack

[10003].pack("U*") # => "✓"