如何在 Ruby 中拯救"invalid Unicode codepoint"?



s = "u{d800}"产生错误,test.rb:1: invalid Unicode codepoint,如预期的那样。然而

begin
s = "u{d800}"
rescue Exception
puts "oh no"
end

做同样的事情,产生错误而不是oh no的输出。是否有一种内置方法可以解决此问题,或者我是否必须对 Unicode 代码点的有效范围进行硬编码以检查有效性?

您可以使用chr测试数字是否是有效的 unicode 代码点

0xd800.chr('UTF-8')
# RangeError (invalid codepoint 0xd800 in UTF-8)

最新更新