德语变音符号到字符串的十六进制表示

时间:2011-03-30 21:59:52

标签: ruby string encoding diacritics

我有一个字符串,其中非ascii字符编码为“\\'fc”(不带引号),其中fc是十六进制252,对应于德语ü明朗片。

我设法找到所有出现并可以替换它们。但我无法将fc转换为ü。

"fc".hex.chr

给了我另一个代表......但如果我做了

puts "fc".hex.chr

我一无所获......

提前致谢

PS:我正在研究ruby 1.9并且已经

# coding: utf-8

位于文件顶部。

2 个答案:

答案 0 :(得分:2)

fc不是该字符的正确UTF-8代码点;这是iso-8859-1或windows-1252。 ü的UTF-8编码是双字节序列c3bc。此外,FC不是有效的UTF-8序列。

由于在Ruby 1.9中假设使用UTF-8,您应该能够使用以下内容获取文字u-ummut:"\xc3\xbc"

答案 1 :(得分:1)

你试过吗

puts "fc".hex.chr(Encoding::UTF_8)

Ruby docs:

更新:

Jason True是对的。 fc是无效的UTF-8。我不知道为什么我的例子有效!