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)