Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
//         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);
            }
        }