やりかた1
str = "神" + "Äが".unicode_normalize(:nfd)
# => "神Äが"
str.size
# => 5
str2 = str.each_grapheme_cluster.map {|s| s.size > 1 ? s.unicode_normalize : s }.join
# => "神Äが"
str2.size
# => 3
やりかた2
str = "神" + "Äが".unicode_normalize(:nfd)
# => "神Äが"
str.size
# => 5
str2 = str.gsub(/\X/) {|s| s.size > 1 ? s.unicode_normalize : s }
# => "神Äが"
str2.size
# => 3
だめなやりかた
神
が正規化されて神
になっている
str = "神" + "Äが".unicode_normalize(:nfd)
# => "神Äが"
str.size
# => 5
str2 = str.unicode_normalize
# => "神Äが"
str2.size
# => 3