public static byte[] ByteToLocal(byte[] byteData, int index, int len) { switch (FileEncodingType.GetType(byteData, index, len)) { case EncodingType.Encoding_ASCII: case EncodingType.Encoding_UTF8: { byte[] newData = new byte[len]; Array.Copy(byteData, index, newData, 0, len); return(newData); } case EncodingType.Encoding_UTF8_BOM: { if (len <= 3) { return(null); } byte[] newData = new byte[len - 3]; Array.Copy(byteData, index + 3, newData, 0, len - 3); return(newData); } case EncodingType.Encoding_Unicode: return(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, byteData, index, len)); case EncodingType.Encoding_BigEndianUnicode: return(Encoding.Convert(Encoding.BigEndianUnicode, Encoding.UTF8, byteData, index, len)); case EncodingType.Encoding_GBK: return(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, GBKTools.GBKToUn(byteData, index, len))); default: return(null); } }
// private static String ConvertLocalForString(byte[] byteArray, int index, int length) // { // return System.Text.Encoding.UTF8.GetString(ConvertLocalForByte(byteArray, index, length)); // } // private static byte[] ConvertLocalForByte(byte[] byteArray) // { // return ConvertLocalForByte(byteArray, 0, byteArray.Length); // } // private static byte[] ConvertLocalForByte(byte[] byteArray, int index, int length) // { // System.Text.Encoding encoding = EncodingType.GetType(byteArray, index, length); // if( encoding == System.Text.Encoding.UTF8) // { // return byteArray; // } // else if( encoding == System.Text.Encoding.Unicode) // { // return System.Text.Encoding.Convert(System.Text.Encoding.Unicode,System.Text.Encoding.UTF8,byteArray,index,length); // } // else if( encoding == System.Text.Encoding.BigEndianUnicode) // { // return System.Text.Encoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.UTF8, System.Text.Encoding.Convert(System.Text.Encoding.BigEndianUnicode, System.Text.Encoding.Unicode, byteArray, index, length)); // } // else //GB2312 null // { // return System.Text.Encoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.UTF8, CusEncoding.GB2312ToUnicode.GBToUnicodeForByte(byteArray, index, length)); // } // } public static byte[] FileByteToLocal(byte[] byteData) { switch (FileEncodingType.GetType(byteData)) { case EncodingType.Encoding_ASCII: case EncodingType.Encoding_UTF8: return(byteData); case EncodingType.Encoding_UTF8_BOM: return(byteData.Skip(3).ToArray()); case EncodingType.Encoding_Unicode: return(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, byteData)); case EncodingType.Encoding_BigEndianUnicode: return(Encoding.Convert(Encoding.BigEndianUnicode, Encoding.UTF8, byteData)); case EncodingType.Encoding_GBK: return(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, GBKTools.GBKToUn(byteData, 0, byteData.Length))); default: return(null); } }