2011-08-25 32 views
0

我有一個變量文本,文本,以默認(UTF-16)編碼編碼。我想將其更改爲。我有:將UTF-16文本轉換爲另一種編碼(Windows-1250)

public static string EncodeToWin1250(string text) 
{ 
    Encoding unicode = Encoding.Unicode; 
    Encoding win1250 = Encoding.GetEncoding(1250); 

    byte[] unicodeBytes = unicode.GetBytes(text); 
    byte[] win1250Bytes = Encoding.Convert(unicode, win1250, unicodeBytes); 

    char[] win1250Chars = new char[win1250.GetCharCount(win1250Bytes, 0, win1250Bytes.Length)]; 
    win1250.GetChars(win1250Bytes, 0, win1250Bytes.Length, win1250Chars, 0); 
    text = new string(win1250Chars); 
    return text; 
} 

但到目前爲止它不起作用。

我該如何解決這個問題?

我返回字符串作爲一個文件:

[...] 
result = BLL.DataExchange.MoneyS3.MoneyS3Export.EncodeToWin1250(result); 
Context.Response.Clear(); 
Context.Response.AddHeader("Content-Disposition", "attachment; filename=invoicesIssued.xml"); 
Context.Response.ContentType = "application/octet-stream"; 
Context.Response.BufferOutput = false; 
Context.Response.Write(result); 
Context.Response.Flush(); 
Context.Response.Close(); 
+0

在C#中的字符串對象始終是Unicode的。你需要哪種編碼? – LueTm

回答

2

所有字符串在內部存儲爲Unicode在.NET。

您可以像使用代碼那樣使用代碼頁將字符串轉換爲字節流。但是你不能改變字符串的內部表示形式:它是Unicode(編碼爲UTF16),句點。

您可以將編碼的字節流轉儲到文件或任何您想要的位置。但是你不能改變.NET字符串對象的內部編碼。

你的函數應返回一個byte[]而不是字符串(win1250Chars實際上)

+0

編輯了主帖。感謝您的回覆 – watchick

相關問題