< Summary

Information
Class: ValidateLib.UtilityClasses.EncodingUtilityClass
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\UtilityClasses\EncodingUtilityClass.cs
Line coverage
98%
Covered lines: 247
Uncovered lines: 4
Coverable lines: 251
Total lines: 280
Line coverage: 98.4%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\UtilityClasses\EncodingUtilityClass.cs

#LineLine coverage
 1namespace ValidateLib.UtilityClasses
 2{
 3    public class EncodingUtilityClass
 4    {
 5        public static bool IsValidEncodingName(string encodingName)
 6        {
 17            return GetEncodingNameFromLabel(encodingName) != null;
 8        }
 9
 10        public static string? GetEncodingNameFromLabel(string label)
 11        {
 112            label = TrimAndToLowerLabel(label);
 113            if (LabelToEncodingMap.ContainsKey(label)) return LabelToEncodingMap[label];
 114            else return null;
 15        }
 16
 17        public static string TrimAndToLowerLabel(string input)
 18        {
 119            if (string.IsNullOrEmpty(input))
 020                return input;
 21
 122            int startIndex = 0;
 123            int endIndex = input.Length - 1;
 24
 25            // Find the index of the first non-whitespace character from the start
 126            while (startIndex < input.Length && char.IsWhiteSpace(input[startIndex]) && input[startIndex] <= 127)
 27            {
 028                startIndex++;
 29            }
 30
 31            // Find the index of the first non-whitespace character from the end
 132            while (endIndex >= startIndex && char.IsWhiteSpace(input[endIndex]) && input[endIndex] <= 127)
 33            {
 034                endIndex--;
 35            }
 36
 137            if (startIndex > endIndex)
 038                return string.Empty;
 39
 140            return input.Substring(startIndex, endIndex - startIndex + 1).ToLower();
 41        }
 42
 143        private static readonly Dictionary<string, string> LabelToEncodingMap = new Dictionary<string, string>
 144        {
 145            // The Encoding
 146            { "unicode-1-1-utf-8", "UTF-8" },
 147            { "unicode11utf8", "UTF-8" },
 148            { "unicode20utf8", "UTF-8" },
 149            { "utf-8", "UTF-8" },
 150            { "utf8", "UTF-8" },
 151            { "x-unicode20utf8", "UTF-8" },
 152            // Legacy single-byte encodings
 153            {"866", "IBM866"},
 154            {"cp866", "IBM866"},
 155            {"csibm866", "IBM866"},
 156            {"ibm866", "IBM866"},
 157            {"csisolatin2", "ISO-8859-2"},
 158            {"iso-8859-2", "ISO-8859-2"},
 159            {"iso-ir-101", "ISO-8859-2"},
 160            {"iso8859-2", "ISO-8859-2"},
 161            {"iso88592", "ISO-8859-2"},
 162            {"iso_8859-2", "ISO-8859-2"},
 163            {"iso_8859-2:1987", "ISO-8859-2"},
 164            {"l2", "ISO-8859-2"},
 165            {"latin2", "ISO-8859-2"},
 166            {"csisolatin3", "ISO-8859-3"},
 167            {"iso-8859-3", "ISO-8859-3"},
 168            {"iso-ir-109", "ISO-8859-3"},
 169            {"iso8859-3", "ISO-8859-3"},
 170            {"iso88593", "ISO-8859-3"},
 171            {"iso_8859-3", "ISO-8859-3"},
 172            {"iso_8859-3:1988", "ISO-8859-3"},
 173            {"l3", "ISO-8859-3"},
 174            {"latin3", "ISO-8859-3"},
 175            {"csisolatin4", "ISO-8859-4"},
 176            {"iso-8859-4", "ISO-8859-4"},
 177            {"iso-ir-110", "ISO-8859-4"},
 178            {"iso8859-4", "ISO-8859-4"},
 179            {"iso88594", "ISO-8859-4"},
 180            {"iso_8859-4", "ISO-8859-4"},
 181            {"iso_8859-4:1988", "ISO-8859-4"},
 182            {"l4", "ISO-8859-4"},
 183            {"latin4", "ISO-8859-4"},
 184            {"csisolatincyrillic", "ISO-8859-5"},
 185            {"cyrillic", "ISO-8859-5"},
 186            {"iso-8859-5", "ISO-8859-5"},
 187            {"iso-ir-144", "ISO-8859-5"},
 188            {"iso8859-5", "ISO-8859-5"},
 189            {"iso88595", "ISO-8859-5"},
 190            {"iso_8859-5", "ISO-8859-5"},
 191            {"iso_8859-5:1988", "ISO-8859-5"},
 192            {"arabic", "ISO-8859-6"},
 193            {"asmo-708", "ISO-8859-6"},
 194            {"csiso88596e", "ISO-8859-6"},
 195            {"csiso88596i", "ISO-8859-6"},
 196            {"csisolatinarabic", "ISO-8859-6"},
 197            {"ecma-114", "ISO-8859-6"},
 198            {"iso-8859-6", "ISO-8859-6"},
 199            {"iso-8859-6-e", "ISO-8859-6"},
 1100            {"iso-8859-6-i", "ISO-8859-6"},
 1101            {"iso-ir-127", "ISO-8859-6"},
 1102            {"iso8859-6", "ISO-8859-6"},
 1103            {"iso88596", "ISO-8859-6"},
 1104            {"iso_8859-6", "ISO-8859-6"},
 1105            {"iso_8859-6:1987", "ISO-8859-6"},
 1106            {"csisolatingreek", "ISO-8859-7"},
 1107            {"ecma-118", "ISO-8859-7"},
 1108            {"elot_928", "ISO-8859-7"},
 1109            {"greek", "ISO-8859-7"},
 1110            {"greek8", "ISO-8859-7"},
 1111            {"iso-8859-7", "ISO-8859-7"},
 1112            {"iso-ir-126", "ISO-8859-7"},
 1113            {"iso8859-7", "ISO-8859-7"},
 1114            {"iso88597", "ISO-8859-7"},
 1115            {"iso_8859-7", "ISO-8859-7"},
 1116            {"iso_8859-7:1987", "ISO-8859-7"},
 1117            {"sun_eu_greek", "ISO-8859-7"},
 1118            {"csiso88598e", "ISO-8859-8"},
 1119            {"csisolatinhebrew", "ISO-8859-8"},
 1120            {"hebrew", "ISO-8859-8"},
 1121            {"iso-8859-8", "ISO-8859-8"},
 1122            {"iso-8859-8-e", "ISO-8859-8"},
 1123            {"iso-ir-138", "ISO-8859-8"},
 1124            {"iso8859-8", "ISO-8859-8"},
 1125            {"iso88598", "ISO-8859-8"},
 1126            {"iso_8859-8", "ISO-8859-8"},
 1127            {"iso_8859-8:1988", "ISO-8859-8"},
 1128            {"visual", "ISO-8859-8"},
 1129            {"csiso88598i", "ISO-8859-8-I"},
 1130            {"iso-8859-8-i", "ISO-8859-8-I"},
 1131            {"logical", "ISO-8859-8-I"},
 1132            {"csisolatin6", "ISO-8859-10"},
 1133            {"iso-8859-10", "ISO-8859-10"},
 1134            {"iso-ir-157", "ISO-8859-10"},
 1135            {"iso8859-10", "ISO-8859-10"},
 1136            {"iso885910", "ISO-8859-10"},
 1137            {"l6", "ISO-8859-10"},
 1138            {"latin6", "ISO-8859-10"},
 1139            {"iso-8859-13", "ISO-8859-13"},
 1140            {"iso8859-13", "ISO-8859-13"},
 1141            {"iso885913", "ISO-8859-13"},
 1142            {"iso-8859-14", "ISO-8859-14"},
 1143            {"iso8859-14", "ISO-8859-14"},
 1144            {"iso885914", "ISO-8859-14"},
 1145            {"csisolatin9", "ISO-8859-15"},
 1146            {"iso-8859-15", "ISO-8859-15"},
 1147            {"iso8859-15", "ISO-8859-15"},
 1148            {"iso885915", "ISO-8859-15"},
 1149            {"iso_8859-15", "ISO-8859-15"},
 1150            {"l9", "ISO-8859-15"},
 1151            {"iso-8859-16", "ISO-8859-16"},
 1152            {"cskoi8r", "KOI8-R"},
 1153            {"koi", "KOI8-R"},
 1154            {"koi8", "KOI8-R"},
 1155            {"koi8-r", "KOI8-R"},
 1156            {"koi8_r", "KOI8-R"},
 1157            {"koi8-ru", "KOI8-U"},
 1158            {"koi8-u", "KOI8-U"},
 1159            {"csmacintosh", "macintosh"},
 1160            {"mac", "macintosh"},
 1161            {"macintosh", "macintosh"},
 1162            {"x-mac-roman", "macintosh"},
 1163            {"dos-874", "windows-874"},
 1164            {"iso-8859-11", "windows-874"},
 1165            {"iso8859-11", "windows-874"},
 1166            {"iso885911", "windows-874"},
 1167            {"tis-620", "windows-874"},
 1168            {"cp1250", "windows-1250"},
 1169            {"windows-1250", "windows-1250"},
 1170            {"x-cp1250", "windows-1250"},
 1171            {"cp1251", "windows-1251"},
 1172            {"windows-1251", "windows-1251"},
 1173            {"x-cp1251", "windows-1251"},
 1174            {"ansi_x3.4-1968", "windows-1252"},
 1175            {"ascii", "windows-1252"},
 1176            {"cp1252", "windows-1252"},
 1177            {"cp819", "windows-1252"},
 1178            {"csisolatin1", "windows-1252"},
 1179            {"ibm819", "windows-1252"},
 1180            {"iso-8859-1", "windows-1252"},
 1181            {"iso-ir-100", "windows-1252"},
 1182            {"iso8859-1", "windows-1252"},
 1183            {"iso88591", "windows-1252"},
 1184            {"iso_8859-1", "windows-1252"},
 1185            {"iso_8859-1:1987", "windows-1252"},
 1186            {"l1", "windows-1252"},
 1187            {"latin1", "windows-1252"},
 1188            {"us-ascii", "windows-1252"},
 1189            {"windows-1252", "windows-1252"},
 1190            {"x-cp1252", "windows-1252"},
 1191            {"cp1253", "windows-1253"},
 1192            {"windows-1253", "windows-1253"},
 1193            {"x-cp1253", "windows-1253"},
 1194            {"cp1254", "windows-1254"},
 1195            {"csisolatin5", "windows-1254"},
 1196            {"iso-8859-9", "windows-1254"},
 1197            {"iso-ir-148", "windows-1254"},
 1198            {"iso8859-9", "windows-1254"},
 1199            {"iso88599", "windows-1254"},
 1200            {"iso_8859-9", "windows-1254"},
 1201            {"iso_8859-9:1989", "windows-1254"},
 1202            {"l5", "windows-1254"},
 1203            {"latin5", "windows-1254"},
 1204            {"windows-1254", "windows-1254"},
 1205            {"x-cp1254", "windows-1254"},
 1206            {"cp1255", "windows-1255"},
 1207            {"windows-1255", "windows-1255"},
 1208            {"x-cp1255", "windows-1255"},
 1209            {"cp1256", "windows-1256"},
 1210            {"windows-1256", "windows-1256"},
 1211            {"x-cp1256", "windows-1256"},
 1212            {"cp1257", "windows-1257"},
 1213            {"windows-1257", "windows-1257"},
 1214            {"x-cp1257", "windows-1257"},
 1215            {"cp1258", "windows-1258"},
 1216            {"windows-1258", "windows-1258"},
 1217            {"x-cp1258", "windows-1258"},
 1218            {"x-mac-cyrillic", "x-mac-cyrillic"},
 1219            {"x-mac-ukrainian", "x-mac-ukrainian"},
 1220            // Legacy multi-byte Chinese (simplified) encodings
 1221            {"chinese", "GBK"},
 1222            {"csgb2312", "GBK"},
 1223            {"csiso58gb231280", "GBK"},
 1224            {"gb2312", "GBK"},
 1225            {"gb_2312", "GBK"},
 1226            {"gb_2312-80", "GBK"},
 1227            {"gbk", "GBK"},
 1228            {"iso-ir-58", "GBK"},
 1229            {"x-gbk", "GBK"},
 1230            {"gb18030", "gb18030"},
 1231            // Legacy multi-byte Chinese (traditional) encodings
 1232            {"big5", "Big5"},
 1233            {"big5-hkscs", "Big5"},
 1234            {"cn-big5", "Big5"},
 1235            {"csbig5", "Big5"},
 1236            {"x-x-big5", "Big5"},
 1237            //Legacy multi-byte Japanese encodings
 1238            {"cseucpkdfmtjapanese", "EUC-JP"},
 1239            {"euc-jp", "EUC-JP"},
 1240            {"x-euc-jp", "EUC-JP"},
 1241            {"csiso2022jp", "ISO-2022-JP"},
 1242            {"iso-2022-jp", "ISO-2022-JP"},
 1243            {"csshiftjis", "Shift_JIS"},
 1244            {"ms932", "Shift_JIS"},
 1245            {"ms_kanji", "Shift_JIS"},
 1246            {"shift-jis", "Shift_JIS"},
 1247            {"shift_jis", "Shift_JIS"},
 1248            {"sjis", "Shift_JIS"},
 1249            {"windows-31j", "Shift_JIS"},
 1250            {"x-sjis", "Shift_JIS"},
 1251            //Legacy multi-byte Korean encodings
 1252            {"cseuckr", "EUC-KR"},
 1253            {"csksc56011987", "EUC-KR"},
 1254            {"euc-kr", "EUC-KR"},
 1255            {"iso-ir-149", "EUC-KR"},
 1256            {"korean", "EUC-KR"},
 1257            {"ks_c_5601-1987", "EUC-KR"},
 1258            {"ks_c_5601-1989", "EUC-KR"},
 1259            {"ksc5601", "EUC-KR"},
 1260            {"ksc_5601", "EUC-KR"},
 1261            {"windows-949", "EUC-KR"},
 1262            //Legacy miscellaneous encodings
 1263            {"csiso2022kr", "replacement"},
 1264            {"hz-gb-2312", "replacement"},
 1265            {"iso-2022-cn", "replacement"},
 1266            {"iso-2022-cn-ext", "replacement"},
 1267            {"iso-2022-kr", "replacement"},
 1268            {"unicodefffe", "UTF-16BE"},
 1269            {"utf-16be", "UTF-16BE"},
 1270            {"csunicode", "UTF-16LE"},
 1271            {"iso-10646-ucs-2", "UTF-16LE"},
 1272            {"ucs-2", "UTF-16LE"},
 1273            {"unicode", "UTF-16LE"},
 1274            {"unicodefeff", "UTF-16LE"},
 1275            {"utf-16", "UTF-16LE"},
 1276            {"utf-16le", "UTF-16LE"},
 1277            {"x-user-defined", "x-user-defined"}
 1278        };
 279    }
 280}