我有一个非ASCII字符编码为“\\'fc”(不含引号)的字符串,其中fc是对应于德语变音符号的十六进制252。十六进制表示的德语变元字符串
我设法找到所有的出现,并可以取代它们。但我一直无法将fc转换为ü。
"fc".hex.chr
给了我另一种表示...但如果我这样做
puts "fc".hex.chr
我得不到任何回报......提前
感谢
PS:我的工作红宝石1.9和有
# coding: utf-8
在文件的顶部。
我有一个非ASCII字符编码为“\\'fc”(不含引号)的字符串,其中fc是对应于德语变音符号的十六进制252。十六进制表示的德语变元字符串
我设法找到所有的出现,并可以取代它们。但我一直无法将fc转换为ü。
"fc".hex.chr
给了我另一种表示...但如果我这样做
puts "fc".hex.chr
我得不到任何回报......提前
感谢
PS:我的工作红宝石1.9和有
# coding: utf-8
在文件的顶部。
fc不是该字符的正确UTF-8编码点;那是iso-8859-1或windows-1252。 ü的UTF-8编码是两字节序列c3bc。此外,FC不是有效的UTF-8序列。
由于UTF-8,假设在Ruby 1.9中,你应该能够得到字面U型变音:"\xc3\xbc"
问题是获得相应的utf-8,而只有iso-8859表示。我知道如何获得u语音变音,但不知道如何从ISO表示中获得它...但仍然感谢 – Lincoln 2011-03-30 23:02:46
对不起,该问题的方面没有明确规定,所以我推测你只是误解了UTF -8工作。 – JasonTrue 2011-03-30 23:07:47
虽然你没有回答我的问题,但你是对的:我不太清楚UTF-8是如何工作的......我仍然讨厌每一个发生的编码问题......这些是我最难以解决的问题。看看我用来转换我奇怪的文本的完整片段...地狱:http://pastie.org/1737333 – Lincoln 2011-03-30 23:32:19
嗯...我恨这个编码丛林... – Lincoln 2011-03-30 23:04:16
可能是因为0xfc.chr。编码返回ascii-8bit。 chr(Encoding :: UTF_8)将源编码转换为目标编码。 – JasonTrue 2011-03-30 23:06:14
@JasonTrue:这是否取决于'Encoding.default_internal'的值? – Mikel 2011-03-30 23:10:38