2011-03-30 22 views
1

我有一个非ASCII字符编码为“\\'fc”(不含引号)的字符串,其中fc是对应于德语变音符号的十六进制252。十六进制表示的德语变元字符串

我设法找到所有的出现,并可以取代它们。但我一直无法将fc转换为ü。

"fc".hex.chr 

给了我另一种表示...但如果我这样做

puts "fc".hex.chr 

我得不到任何回报......提前

感谢

PS:我的工作红宝石1.9和有

# coding: utf-8 

在文件的顶部。

回答

1

你试过

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

Ruby的文档:

UPDATE:

杰森真正为r飞行。 fc是无效的UTF-8。我不知道为什么我的例子有效!

+0

嗯...我恨这个编码丛林... – Lincoln 2011-03-30 23:04:16

+0

可能是因为0xfc.chr。编码返回ascii-8bit。 chr(Encoding :: UTF_8)将源编码转换为目标编码。 – JasonTrue 2011-03-30 23:06:14

+0

@JasonTrue:这是否取决于'Encoding.default_internal'的值? – Mikel 2011-03-30 23:10:38

2

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

由于UTF-8,假设在Ruby 1.9中,你应该能够得到字面U型变音:"\xc3\xbc"

+0

问题是获得相应的utf-8,而只有iso-8859表示。我知道如何获得u语音变音,但不知道如何从ISO表示中获得它...但仍然感谢 – Lincoln 2011-03-30 23:02:46

+0

对不起,该问题的方面没有明确规定,所以我推测你只是误解了UTF -8工作。 – JasonTrue 2011-03-30 23:07:47

+0

虽然你没有回答我的问题,但你是对的:我不太清楚UTF-8是如何工作的......我仍然讨厌每一个发生的编码问题......这些是我最难以解决的问题。看看我用来转换我奇怪的文本的完整片段...地狱:http://pastie.org/1737333 – Lincoln 2011-03-30 23:32:19

相关问题