2012-01-16 75 views
0

我在UTF-8的字符串(根据.encoding.name & .valid_encoding?),而且在它的转义Unicode字符(\ u009A)红宝石1.9.2的Unicode - Unicode的转义字符被丢弃

“Hammarskj \ u009Ald”

这应该打印为“Hammarskjšld”,但它只是滴下字形。 EG:

puts "Hammarskj\u009Ald" 
p "Hammarskj\u009Ald" 

结果的文本:

Hammarskjld 
"Hammarskj\u009Ald" 

它还(如果我保存在数据库中的数据)时,其保存和丢弃。我搜索了一段时间,但我无法弄清楚如何忽略它(这是我认为我需要做的)。很多信息都是1.8.7,而1.9.2的一些信息并不是我所需要的。

任何人有任何想法如何做我想要的?我似乎有一个有效的UTF-8字符串,我想要做的就是保存在数据库中(完好无损),但它总是丢弃转义的unicode。

+1

\ u009A在Unicode中不是“š”,9A在Windows-1252中是“š”。 Unicode“š”是\ u016​​1。有人向你说谎,如果他们声称使用Unicode。 – 2012-01-16 06:04:31

+0

http://www.fileformat.info/info/unicode/char/9a/index.htm这是另有说明。 – Paul 2012-01-16 07:08:58

+2

@Paul,fileformat.info网站由于其页面生成方式而导致某些字符的图像有误。在这种情况下,图像显示“š”,但名称显示为“”,分类显示为“其他,控制[Cc]”。因此,它是控制字符,而不是可见字符。数据中还有其他的东西可能是错误的(错误的代码转换?):名字“Hammarskjšld”没有意义,它显然应该是“Hammarskjöld”(U + 00F6作为倒数第三个字母)。 – 2012-01-16 07:43:28

回答

0

你确定它已被丢弃,而不是不显示?也许这只是你的字体在代码点中有一个不显示零宽度字符的问题。

当您将其从数据库中取出并且p已编辑或inspect已编辑时,如果您看到转义字符,则表示它已存在,未放弃。这是你打印出来的问题。

+0

它在OSX终端中具有字体。我在那里看到了UTF-8字符。但它也没有显示在数据库中(转义),字符只是被丢弃。我已经拿出来检查了,它实际上没有了。 – Paul 2012-01-16 05:44:12