галочка символа = "\ u2713" - непоследовательная распечатка - PullRequest
0 голосов
/ 23 апреля 2019

Непоследовательное поведение.

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 Ответ

3 голосов
/ 23 апреля 2019

В 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*") # => "✓"
...