在我的.NET 3.5 C#應用程序中,我將一個unicode編碼的字節數組轉換爲字符串。Unicode轉換爲字符串葉字節Byte命令標記
的字節數組如下:
{255, 254, 85, 0, 83, 0, 69, 0}
使用Encoding.Unicode.GetString(var)
,我的字節數組轉換爲字符串,它返回:
{65279 '', 85 'U', 83 'S' , 69 'E'}
的主角,65279
,似乎是一個Zero Width No-Break Space,它用作Unicode編碼中的字節順序標記,其外觀在我的應用程序的其餘部分中導致問題。
目前我正在使用的解決方法是var.Trim(new char[]{'\uFEFF','\u200B'});
,它工作得很好。
但問題的確是,應該不是GetString
小心刪除字節順序標記?或者我在轉換字節數組時做錯了什麼?
@bzlm:_「Encoding.Unicode可能會返回一個UTF-16編碼器」_ - 沒有「可能」關於它。它有_better_這樣做,因爲這是它被記錄下來的:[「使用little endian字節順序的UTF-16格式的編碼。」](https://msdn.microsoft.com/zh-cn/library/ system.text.encoding.unicode(v = vs.110).aspx) – 2015-03-30 19:43:15
你爲什麼要修剪'\ u200B'? – xanatos 2015-03-30 19:51:00