2012-12-07 46 views

回答

3

假設你有這樣的字符串:

string input = "test_\\303\\246\\303\\270\\303\\245.txt"; 

I.E.通過「二進制字符串」

string input = "test_\\303\\246\\303\\270\\303\\245.txt"; 
Encoding iso88591 = Encoding.GetEncoding(28591); //See note at the end of answer 
Encoding utf8 = Encoding.UTF8; 


//Turn the octal escape sequences into characters having codepoints 0-255 
//this results in a "binary string" 
string binaryString = Regex.Replace(input, @"\\(?<num>[0-7]{3})", delegate(Match m) 
{ 
    String oct = m.Groups["num"].ToString(); 
    return Char.ConvertFromUtf32(Convert.ToInt32(oct, 8)); 

}); 

//Turn the "binary string" into bytes 
byte[] raw = iso88591.GetBytes(binaryString); 

//Read the bytes into C# string 
string output = utf8.GetString(raw); 
Console.WriteLine(output); 
//test_æøå.txt 

,我的意思是隻包含與代碼點0-255字符的字符串:從字面上

test_\303\246\303\270\303\245.txt 

你能做到這一點。因此,它相當於一個窮人的byte[]其中 您檢索索引i而不是bytebyte[]索引i(這是我們在幾年前做的JavaScript)中的字符的碼值。由於iso-8859-1將映射到第一個256位unicode代碼,因此它非常適合將「二進制字符串」轉換爲byte[]

+0

完美的解決方案。謝謝。 –