2013-06-03 44 views
2

目前我使用的是這樣的:如何安全地將字節數組轉換爲Linux上的C#中的字符串(在單聲道下)?

private static ASCEncoding = new Encoding(); 
... 
... 

和我的方法:當在Linux下

9I9T (win) 
98T (linux) 
+0

這是因爲你使用ASCII編碼。 CPs不同。 –

+3

您需要在兩端使用_correct_編碼。你需要確保它可以編碼你需要的每個字符。使用UTF8。 – SLaks

+1

你的代碼不能編譯; '編碼'是抽象的。 – SLaks

回答

3

檢查

... 
public object some_method(object BinaryRequest) 
{ 
byte[] byteRequest = (byte[])BinaryRequest; 
string strRequest = ASCEncoding.GetString(byteRequest); 
    ... 
} 

在Windows下檢查時,一些字符是不同的當你在系統之間進行通信時,使用特定的a是個好主意爲您的文本提供文檔編碼。對於用英文書寫的文本(包括使用關鍵字/等的英文的編程語言),UTF-8編碼很可能在編碼表示中使用最少的總字節數。

byte[] byteRequest = (byte[])BinaryRequest; 
string strRequest = Encoding.UTF8.GetString(byteRequest); 

很明顯要使用這個,你需要使用相同的編碼來產生你的請求。

string strRequest = ... 
byte[] byteRequest = Encoding.UTF8.GetBytes(strRequest); 
0
string stringValue = Encoding.Default.GetString(byteArray); 
+0

這適用於.NET和Mono – MjeOsX

+1

這是否工作完全取決於'byteArray'中的數據和系統的語言環境。 –

+0

小心System.Text.Encoding.Default,因爲它可能會在每臺機器上運行不同。這就是爲什麼建議總是指定一個編碼,比如UTF-8。 –

相關問題