Ruby 分解 UTF-8 字符

Ruby decompose UTF-8 chars

我使用

获得了“ü”的UTF-16编码
#!/bin/env ruby
# encoding: UTF-8

puts "ü".unpack('U*')

嗯,只是 returns 252 很好。 我阅读了 ruby String 的在线文档,但我不知道如何分解这个字符。

ü 的情况下,我想获取字符 u (117)¨ (168)

提前致谢, 感谢您的帮助

String#unpackArray#pack正如ForeverZer0在评论中提到的,用于将二进制字符串解码为更结构化的数据(例如数字)和将数据编码为字符串(分别)。如果你想分解unicode,你想要String#unicode_normalize和NFD形式:

> "ü".unicode_normalize(:nfd).chars
 => ["u", "̈"] 

这给你 117 和 776,而不是 168。168 在 ISO-8859-1 中是 ¨ 而不是 UTF-8。