1
對於我目前正在使用的應用程序,我需要從二進制文件中讀取UTF-8編碼的字符串。這些字符串不是以null結尾的,而是以一個指定其長度的字節開頭。Vala:從不能識別多字節字符的字節中讀取UTF-8字符串
當我嘗試讀取這樣的字符串時,所有多字節UTF-8字符都變爲?
。查找下面的樣本:
public void main(string[] args) {
File file = File.new_for_path("test.bin");
DataInputStream instream = new DataInputStream(file.read());
uint8[] chars = new uint8[instream.read_byte()];
instream.read(chars);
print(@"$((string) chars)\n");
}
這當然是一個剝離的樣本。有問題的實際二進制文件是加密的,這並不反映在這裏。如果我用包含以UTF-8字節長度開頭的字節序列09 52 C3 AD 61 73 74 72 61 64
或Ríastrad
的樣本文件test.bin來使用它。期望的輸出是Ríastrad
,但實際輸出是R?astrad
。
任何人都可以闡明這個問題,也許是一個解決方案?
非常感謝 - 這正是我所需要的!我完全專注於事物的一面,而完全忽略了另一面,在這種情況下更重要的一面。我不會再犯錯了! – aabryant