2015-06-19 77 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)