我有一個Base64編碼的數據包捕獲二進制文件。 我想提取一個子串在捕獲的某個位置。如何正確地將UTF-16LE字符的字節數組轉換爲Ruby中的utf-8字符串
我在Ruby中這樣做:
payload_decoded = Base64.decode64(payload)
file_size = payload_decoded[114..115].unpack('S*')[0]
file_fullpath = payload_decoded[124, file_size]
p file_fullpath
此作品在一定程度上。 file_size獲得一個我想要提取的長度的整數。然後我可以提取字節數組的正確部分。如果我只是在我的Mac終端中測試它,它會完美地顯示字符串。
但是,此應用程序本身的代碼在CentOS7中運行時,所有字符都顯示爲00字節後綴(例如,T顯示爲T \ x00)。我想我可以從字符串中刪除,但想避免這種情況。什麼是最正確的方法來處理這個問題?
TIA
通常['String#encode'](https://ruby-doc.org/core-2.4.0/String.html#method-i-encode)是一個很好的開始。 – tadman
謝謝,我確實嘗試使用編碼。但它之前缺少了force_encoding。讓我更困惑的是,在Mac終端上,我不需要那些額外的步驟。 – user2679436