字符串中的字符编码

4

我尝试使用以下代码输出包含字母“ü”的德语句子的转义形式(ascii 252,八进制374,十六进制0xfc):

pp "Test \374"
pp "Test \374".encode("UTF-8")

但是使用ruby 1.8.7,我得到的结果是: "Test \374" "Test \374"

使用ruby 1.9.2输出结果为: "Test \xFC" "Test \xFC"

如何让ruby(1.8.7 + 1.9.x)输出"Test ü"? :)

1个回答

8
>> pp "Test \xc3\xbc"
"Test ü"
=> nil

>> s="Test \374"  # This has utf-8 encoding but we need it to be "ISO-8859-1"
=> "Test \xFC"
>> s.force_encoding("ISO-8859-1")
=> "Test "
>> s.encode("UTF-8")
=> "Test ü"
>> 

为什么我的转义序列不起作用?由于我从外部数据源获取字符串,所以我该如何将其转换为您的格式,以便Ruby可以处理它? - gucki
@gucki,你的数据源可能是ISO-8859-1编码。我添加了一个示例来展示如何更改它。如果可能的话,最好将数据源打开为ISO-8859-1。 - John La Rooy
不幸的是,数据源有时返回正确的utf-8,有时是iso-8859-1。但是您的解决方案非常好,谢谢 :) - gucki
4
谢谢你!谢谢你!谢谢你!你就像一只独角兽和一个双重彩虹合二为一。 - Johannes Fahrenkrug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接