誤區:byte陣列在不確定是哪種編碼集的情況下,以任意一種編碼集將byte轉成string字串,再以同樣的編碼集將string字串轉成byte陣列。前後byte陣列是一樣的。
這麼理解是錯誤的!!byte陣列很有可能含有中文。但事先我們也不知道有沒有中文,導致前後byte陣列發生改變。
話不多說。上**,執行一下,看下結果。
public
static
void
main
(string[
] args)
throws unsupportedencodingexception
執行結果
[49, 50, 51, -26, -100, -88, -27, -92, -76, -28, -70, -70]
[49, 50, 51, -26, -100, -88, -27, -92, -76, -28, -70, 63]
由此可見,編碼集轉換之後,byte已不在是原來的資料。
根據上述情況。針對比較常用的編碼集(utf-8、gbk、gb2312、iso8859-1、gb18030)我們做了乙個完整的測試。測試結果如下圖。
紅色代表前後byte不一致。綠色代表前後byte沒有變化。
1. utf-8與gb系列(gbk、gb2312、gb18030)編碼集之間轉換,有中文時需慎重。
2. byte陣列在不確定是哪種編碼集的情況下。進行iso8859-1編碼轉換是完全ok的。
3. byte陣列是iso8859-1編碼的情況下。上述編碼集都可以進行轉換。陣列不會改變。
C Stream 和 byte 之間的轉換
一.二進位制轉換成 memorystream ms new memorystream bytes ms.position 0 image img image.fromstream ms ms.close this.picturebox1.image 二.c 中byte與string的轉換 1 sys...
C Stream 和 byte 之間的轉換
一.二進位制轉換成 memorystream ms new memorystream bytes ms.position 0 image img image.fromstream ms ms.close this.picturebox1.image 二.c 中byte與string的轉換 1 sys...
C Stream 和 byte 之間的轉換
一.二進位制轉換成 memorystream ms new memorystream bytes ms.position 0 image img image.fromstream ms ms.close this.picturebox1.image 二.c 中byte與string的轉換 1 sys...