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); }
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); }
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); }
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; }