byte資料在編碼集之間的轉換以及陷阱 詳盡總結

2021-10-06 14:12:31 字數 921 閱讀 2477

誤區: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...