Ejemplo n.º 1
0
        internal static string GetString(byte[] bytes, int start, int count, Id3TextEncoding encodingType)
        {
            Encoding encoding = GetEncoding(encodingType);
            string   str      = encoding.GetString(bytes, start, count);

            if (encodingType == Id3TextEncoding.Iso8859_1 && ShiftJisDetector.Detect(bytes, start, count))
            {
                var shiftJis = Encoding.GetEncoding(932);
                str = shiftJis.GetString(bytes, start, count);
            }
            else
            {
                str = encoding.GetString(bytes, start, count);
            }

            if (encodingType == Id3TextEncoding.Unicode && str.Length > 0)
            {
                if (str[0] == '\xFFFE' || str[0] == '\xFEFF')
                {
                    str = str.Remove(0, 1);
                }
            }

            return(str);
        }
Ejemplo n.º 2
0
 internal static Encoding GetEncoding(Id3TextEncoding encodingType)
 {
     if (encodingType == Id3TextEncoding.Iso8859_1)
     {
         return(Encoding.GetEncoding("iso-8859-1"));
     }
     if (encodingType == Id3TextEncoding.Unicode)
     {
         return(Encoding.Unicode);
     }
     Debug.Assert(false, "Invalid Encoding type specified");
     return(null);
 }
Ejemplo n.º 3
0
 private static int GetSplitterLength(Id3TextEncoding encodingType)
 {
     if (encodingType == Id3TextEncoding.Iso8859_1)
     {
         return(1);
     }
     if (encodingType == Id3TextEncoding.Unicode)
     {
         return(2);
     }
     Debug.Assert(false, "Invalid encoding type specified");
     return(-1);
 }
        internal static string GetString(byte[] bytes, int start, int count, Id3TextEncoding encodingType)
        {
            Encoding encoding = GetEncoding(encodingType);
            string   str      = encoding.GetString(bytes, start, count);

            if (encodingType == Id3TextEncoding.Unicode)
            {
                if (str[0] == '\xFFFE' || str[0] == '\xFEFF')
                {
                    str = str.Remove(0, 1);
                }
            }

            return(str);
        }
        internal static string[] GetSplitStrings(byte[] bytes, int start, int count, Id3TextEncoding encodingType)
        {
            byte[][] splitBytes = ByteArrayHelper.SplitBySequence(bytes, start, count, GetSplitterBytes(encodingType));
            if (splitBytes.Length == 0)
            {
                return new[] { string.Empty }
            }
            ;

            var strings = new string[splitBytes.Length];

            for (int splitByteIdx = 0; splitByteIdx < splitBytes.Length; splitByteIdx++)
            {
                strings[splitByteIdx] = GetString(splitBytes[splitByteIdx], 0, splitBytes[splitByteIdx].Length, encodingType);
            }
            return(strings);
        }
        internal static byte[] GetSplitterBytes(Id3TextEncoding encodingType)
        {
            var splitterBytes = new byte[GetSplitterLength(encodingType)];

            return(splitterBytes);
        }
Ejemplo n.º 7
0
 private static string ConvertEncoding(string convertedStr,  byte[] input, Id3TextEncoding type)
 {
     switch (type)
     {
         case Id3TextEncoding.Unicode:
             {
                 return convertedStr;
             }
         case Id3TextEncoding.Iso8859_1:
             {
                 return Encoding.GetEncoding("windows-1251").GetString(input).Replace("\0", "");
             }
     }
     return convertedStr;
 }