2009-11-13 83 views
2

encoding.utf8.getbytes我對C#的工作,嘗試下面的代碼問題在C#

byte[] buffer = new byte[str.Length]; 
buffer = Encoding.UTF8.GetBytes(str); 

在STR我已經得到了長時間的數據,但我已經在得到完整的編碼字節有問題。 請告訴我發生了什麼問題,我該如何解決這個問題?

+0

這裏沒有什麼可能是「布萊恩錯誤」。我相信你將不得不清除你的問題。你認爲什麼是錯的,你期望的是什麼。 – 2009-11-13 16:14:09

+0

感謝您的回覆... 我第一次獲得了完整的編碼...但是當第二次調用時出現問題...是否對用於獲取「str」的長度有任何限制bytes ... bcoz str我正在使用包含冗長的字符串數據 – 2009-11-13 16:18:05

回答

2

的正確使用方法是:

byte[] buffer = Encoding.UTF8.GetBytes(str); 
6

你爲什麼要創建一個新的字節數組然後忽略它?在調用GetBytes之前,buffer的值將被對GetBytes返回的新字節數組的引用替換。

但是,您不應該期望字符串的UTF-8編碼版本與原始字符串的字符長度相同,除非它是全部ASCII。 U + 007F上的任何字符至少佔用2個字節。

這裏的大圖是什麼?你想達到什麼目的,爲什麼字節數組的長度對你來說很重要?

0

一般情況下,你不應該做出長度/大小的任何假設/用編碼,字節和字符/字符串時計數。讓Encoding對象完成它們的工作,然後查詢該信息的結果對象。

話雖如此,我不相信有編碼類的固有長度限制。我有幾個生產應用程序在相反方向進行相同的工作(字節編碼爲字符),這些應用程序正在處理數十兆字節的字節數組。