2015-06-19 69 views
1

我有一些字符串数据,看起来像这样:如何转换红宝石UTF串

"\x00M\x00o\x00d\x00e\x00l\x00" 

当我运行:

puts "\x00M\x00o\x00d\x00e\x00l\x00" 

我看到我喜欢什么:

'Model' 

但据我所知,这个字符串仍然有不同的编码。看起来似乎应用了一些翻译。

我想将“\ x00M \ x00o \ x00d \ x00e \ x00l \ x00”转换为“模型”以供别处使用,其中奇怪编码的字符串对我无效。

任何人都知道一种方法来做到这一点?我已经搜寻了我的眼球。

+0

此编码为UTF16-BE,显然,你在某种程度上试图将其作为UTF-8解码。 –

+0

正确。我的转换尝试似乎无效。但我希望它在UTF-8 ASCII – dobus

+0

那么''\ x00M \ x00o \ x00d \ x00e \ x00l \ x00“.gsub(”\ x00“,”“)'? –

回答

0

因此,这是我来解决,感谢那些谁帮助来此:

encoding_options = { 
    invalid: :replace, 
    undef: :replace, 
    replace: '', 
    universal_newline: true 
} 

data.gsub("\x00", '') 
    .encode(Encoding.find('ASCII'), encoding_options)