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

问题描述 投票:0回答:1

行为不一致。

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

ruby unicode unicode-string
1个回答
3
投票

在ruby中,您可以使用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*") # => "✓"
© www.soinside.com 2019 - 2024. All rights reserved.