0
我有一個文件下面的名字,我需要閱讀的字符串作爲一個UTF8編碼的字符串,所以從這個:讀UTF8/UNICODE從一個轉義ASCII字符序列
test_\303\246\303\270\303\245.txt
我需要獲得如下:
test_æøå.txt
你知道如何用C#實現這個嗎?
我有一個文件下面的名字,我需要閱讀的字符串作爲一個UTF8編碼的字符串,所以從這個:讀UTF8/UNICODE從一個轉義ASCII字符序列
test_\303\246\303\270\303\245.txt
我需要獲得如下:
test_æøå.txt
你知道如何用C#實現這個嗎?
假設你有這樣的字符串:
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
而不是byte
值byte[]
索引i
(這是我們在幾年前做的JavaScript)中的字符的碼值。由於iso-8859-1將映射到第一個256位unicode代碼,因此它非常適合將「二進制字符串」轉換爲byte[]
。
完美的解決方案。謝謝。 –