0001: /*
0002: ****************************************************************************
0003: * Copyright (C) 2005-2006, International Business Machines Corporation and *
0004: * others. All Rights Reserved. *
0005: ************************************************************************** *
0006: *
0007: */
0008:
0009: package com.ibm.icu.text;
0010:
0011: /**
0012: * This class recognizes single-byte encodings. Because the encoding scheme is so
0013: * simple, language statistics are used to do the matching.
0014: *
0015: * @internal
0016: */
0017: abstract class CharsetRecog_sbcs extends CharsetRecognizer {
0018:
0019: /* (non-Javadoc)
0020: * @see com.ibm.icu.text.CharsetRecognizer#getName()
0021: */
0022: abstract String getName();
0023:
0024: /* (non-Javadoc)
0025: * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
0026: */
0027: abstract int match(CharsetDetector det);
0028:
0029: static class NGramParser {
0030: private static final int N_GRAM_SIZE = 3;
0031: private static final int N_GRAM_MASK = 0xFFFFFF;
0032:
0033: private int byteIndex = 0;
0034: private int ngram = 0;
0035:
0036: private int[] ngramList;
0037: private byte[] byteMap;
0038:
0039: private int ngramCount;
0040: private int hitCount;
0041:
0042: public NGramParser(int[] theNgramList, byte[] theByteMap) {
0043: ngramList = theNgramList;
0044: byteMap = theByteMap;
0045:
0046: ngram = 0;
0047:
0048: ngramCount = hitCount = 0;
0049: }
0050:
0051: /*
0052: * Binary search for value in table, which must have exactly 64 entries.
0053: */
0054: private static int search(int[] table, int value) {
0055: int index = 0;
0056:
0057: if (table[index + 32] <= value) {
0058: index += 32;
0059: }
0060:
0061: if (table[index + 16] <= value) {
0062: index += 16;
0063: }
0064:
0065: if (table[index + 8] <= value) {
0066: index += 8;
0067: }
0068:
0069: if (table[index + 4] <= value) {
0070: index += 4;
0071: }
0072:
0073: if (table[index + 2] <= value) {
0074: index += 2;
0075: }
0076:
0077: if (table[index + 1] <= value) {
0078: index += 1;
0079: }
0080:
0081: if (table[index] > value) {
0082: index -= 1;
0083: }
0084:
0085: if (index < 0 || table[index] != value) {
0086: return -1;
0087: }
0088:
0089: return index;
0090: }
0091:
0092: private void lookup(int this Ngram) {
0093: ngramCount += 1;
0094:
0095: if (search(ngramList, this Ngram) >= 0) {
0096: hitCount += 1;
0097: }
0098:
0099: }
0100:
0101: private void addByte(int b) {
0102: ngram = ((ngram << 8) + (b & 0xFF)) & N_GRAM_MASK;
0103: lookup(ngram);
0104: }
0105:
0106: private int nextByte(CharsetDetector det) {
0107: if (byteIndex >= det.fInputLen) {
0108: return -1;
0109: }
0110:
0111: return det.fInputBytes[byteIndex++] & 0xFF;
0112: }
0113:
0114: public int parse(CharsetDetector det) {
0115: int b;
0116: boolean ignoreSpace = false;
0117:
0118: while ((b = nextByte(det)) >= 0) {
0119: byte mb = byteMap[b];
0120:
0121: // TODO: 0x20 might not be a space in all character sets...
0122: if (mb != 0) {
0123: if (!(mb == 0x20 && ignoreSpace)) {
0124: addByte(mb);
0125: }
0126:
0127: ignoreSpace = (mb == 0x20);
0128: }
0129: }
0130:
0131: // TODO: Is this OK? The buffer could have ended in the middle of a word...
0132: addByte(0x20);
0133:
0134: double rawPercent = (double) hitCount / (double) ngramCount;
0135:
0136: // if (rawPercent <= 2.0) {
0137: // return 0;
0138: // }
0139:
0140: // TODO - This is a bit of a hack to take care of a case
0141: // were we were getting a confidence of 135...
0142: if (rawPercent > 0.33) {
0143: return 98;
0144: }
0145:
0146: return (int) (rawPercent * 300.0);
0147: }
0148: }
0149:
0150: protected boolean haveC1Bytes = false;
0151:
0152: int match(CharsetDetector det, int[] ngrams, byte[] byteMap) {
0153: NGramParser parser = new NGramParser(ngrams, byteMap);
0154:
0155: haveC1Bytes = det.fC1Bytes;
0156:
0157: return parser.parse(det);
0158: }
0159:
0160: abstract static class CharsetRecog_8859_1 extends CharsetRecog_sbcs {
0161: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
0162: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0163: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0164: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0165: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0166: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0167: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0168: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0169: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0170: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0171: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
0172: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0173: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0174: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0175: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0176: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0177: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0178: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0179: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0180: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0181: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0182: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0183: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0184: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0185: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0186: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0187: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0188: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0189: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0190: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0191: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0192: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0193: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0194: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0195: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0196: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0197: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0198: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0199: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0200: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0201: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0202: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0203: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0204: (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0205: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0206: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5,
0207: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0208: (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0209: (byte) 0x20, (byte) 0x20, (byte) 0xE0, (byte) 0xE1,
0210: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0211: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0212: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0213: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
0214: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0215: (byte) 0xF6, (byte) 0x20, (byte) 0xF8, (byte) 0xF9,
0216: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
0217: (byte) 0xFE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
0218: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0219: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0220: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0221: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
0222: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0223: (byte) 0xF6, (byte) 0x20, (byte) 0xF8, (byte) 0xF9,
0224: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
0225: (byte) 0xFE, (byte) 0xFF, };
0226:
0227: public String getName() {
0228: return haveC1Bytes ? "windows-1252" : "ISO-8859-1";
0229: }
0230: }
0231:
0232: static class CharsetRecog_8859_1_da extends CharsetRecog_8859_1 {
0233: private static int[] ngrams = { 0x206166, 0x206174, 0x206465,
0234: 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,
0235: 0x206D65, 0x206F67, 0x2070E5, 0x207369, 0x207374,
0236: 0x207469, 0x207669, 0x616620, 0x616E20, 0x616E64,
0237: 0x617220, 0x617420, 0x646520, 0x64656E, 0x646572,
0238: 0x646574, 0x652073, 0x656420, 0x656465, 0x656E20,
0239: 0x656E64, 0x657220, 0x657265, 0x657320, 0x657420,
0240: 0x666F72, 0x676520, 0x67656E, 0x676572, 0x696765,
0241: 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6572,
0242: 0x6C6967, 0x6C6C65, 0x6D6564, 0x6E6465, 0x6E6520,
0243: 0x6E6720, 0x6E6765, 0x6F6720, 0x6F6D20, 0x6F7220,
0244: 0x70E520, 0x722064, 0x722065, 0x722073, 0x726520,
0245: 0x737465, 0x742073, 0x746520, 0x746572, 0x74696C,
0246: 0x766572, };
0247:
0248: public String getLanguage() {
0249: return "da";
0250: }
0251:
0252: public int match(CharsetDetector det) {
0253: return match(det, ngrams, byteMap);
0254: }
0255: }
0256:
0257: static class CharsetRecog_8859_1_de extends CharsetRecog_8859_1 {
0258: private static int[] ngrams = { 0x20616E, 0x206175, 0x206265,
0259: 0x206461, 0x206465, 0x206469, 0x206569, 0x206765,
0260: 0x206861, 0x20696E, 0x206D69, 0x207363, 0x207365,
0261: 0x20756E, 0x207665, 0x20766F, 0x207765, 0x207A75,
0262: 0x626572, 0x636820, 0x636865, 0x636874, 0x646173,
0263: 0x64656E, 0x646572, 0x646965, 0x652064, 0x652073,
0264: 0x65696E, 0x656974, 0x656E20, 0x657220, 0x657320,
0265: 0x67656E, 0x68656E, 0x687420, 0x696368, 0x696520,
0266: 0x696E20, 0x696E65, 0x697420, 0x6C6963, 0x6C6C65,
0267: 0x6E2061, 0x6E2064, 0x6E2073, 0x6E6420, 0x6E6465,
0268: 0x6E6520, 0x6E6720, 0x6E6765, 0x6E7465, 0x722064,
0269: 0x726465, 0x726569, 0x736368, 0x737465, 0x742064,
0270: 0x746520, 0x74656E, 0x746572, 0x756E64, 0x756E67,
0271: 0x766572, };
0272:
0273: public String getLanguage() {
0274: return "de";
0275: }
0276:
0277: public int match(CharsetDetector det) {
0278: return match(det, ngrams, byteMap);
0279: }
0280: }
0281:
0282: static class CharsetRecog_8859_1_en extends CharsetRecog_8859_1 {
0283: private static int[] ngrams = { 0x206120, 0x20616E, 0x206265,
0284: 0x20636F, 0x20666F, 0x206861, 0x206865, 0x20696E,
0285: 0x206D61, 0x206F66, 0x207072, 0x207265, 0x207361,
0286: 0x207374, 0x207468, 0x20746F, 0x207768, 0x616964,
0287: 0x616C20, 0x616E20, 0x616E64, 0x617320, 0x617420,
0288: 0x617465, 0x617469, 0x642061, 0x642074, 0x652061,
0289: 0x652073, 0x652074, 0x656420, 0x656E74, 0x657220,
0290: 0x657320, 0x666F72, 0x686174, 0x686520, 0x686572,
0291: 0x696420, 0x696E20, 0x696E67, 0x696F6E, 0x697320,
0292: 0x6E2061, 0x6E2074, 0x6E6420, 0x6E6720, 0x6E7420,
0293: 0x6F6620, 0x6F6E20, 0x6F7220, 0x726520, 0x727320,
0294: 0x732061, 0x732074, 0x736169, 0x737420, 0x742074,
0295: 0x746572, 0x746861, 0x746865, 0x74696F, 0x746F20,
0296: 0x747320, };
0297:
0298: public String getLanguage() {
0299: return "en";
0300: }
0301:
0302: public int match(CharsetDetector det) {
0303: return match(det, ngrams, byteMap);
0304: }
0305: }
0306:
0307: static class CharsetRecog_8859_1_es extends CharsetRecog_8859_1 {
0308: private static int[] ngrams = { 0x206120, 0x206361, 0x20636F,
0309: 0x206465, 0x20656C, 0x20656E, 0x206573, 0x20696E,
0310: 0x206C61, 0x206C6F, 0x207061, 0x20706F, 0x207072,
0311: 0x207175, 0x207265, 0x207365, 0x20756E, 0x207920,
0312: 0x612063, 0x612064, 0x612065, 0x61206C, 0x612070,
0313: 0x616369, 0x61646F, 0x616C20, 0x617220, 0x617320,
0314: 0x6369F3, 0x636F6E, 0x646520, 0x64656C, 0x646F20,
0315: 0x652064, 0x652065, 0x65206C, 0x656C20, 0x656E20,
0316: 0x656E74, 0x657320, 0x657374, 0x69656E, 0x69F36E,
0317: 0x6C6120, 0x6C6F73, 0x6E2065, 0x6E7465, 0x6F2064,
0318: 0x6F2065, 0x6F6E20, 0x6F7220, 0x6F7320, 0x706172,
0319: 0x717565, 0x726120, 0x726573, 0x732064, 0x732065,
0320: 0x732070, 0x736520, 0x746520, 0x746F20, 0x756520,
0321: 0xF36E20, };
0322:
0323: public String getLanguage() {
0324: return "es";
0325: }
0326:
0327: public int match(CharsetDetector det) {
0328: return match(det, ngrams, byteMap);
0329: }
0330: }
0331:
0332: static class CharsetRecog_8859_1_fr extends CharsetRecog_8859_1 {
0333: private static int[] ngrams = { 0x206175, 0x20636F, 0x206461,
0334: 0x206465, 0x206475, 0x20656E, 0x206574, 0x206C61,
0335: 0x206C65, 0x207061, 0x20706F, 0x207072, 0x207175,
0336: 0x207365, 0x20736F, 0x20756E, 0x20E020, 0x616E74,
0337: 0x617469, 0x636520, 0x636F6E, 0x646520, 0x646573,
0338: 0x647520, 0x652061, 0x652063, 0x652064, 0x652065,
0339: 0x65206C, 0x652070, 0x652073, 0x656E20, 0x656E74,
0340: 0x657220, 0x657320, 0x657420, 0x657572, 0x696F6E,
0341: 0x697320, 0x697420, 0x6C6120, 0x6C6520, 0x6C6573,
0342: 0x6D656E, 0x6E2064, 0x6E6520, 0x6E7320, 0x6E7420,
0343: 0x6F6E20, 0x6F6E74, 0x6F7572, 0x717565, 0x72206C,
0344: 0x726520, 0x732061, 0x732064, 0x732065, 0x73206C,
0345: 0x732070, 0x742064, 0x746520, 0x74696F, 0x756520,
0346: 0x757220, };
0347:
0348: public String getLanguage() {
0349: return "fr";
0350: }
0351:
0352: public int match(CharsetDetector det) {
0353: return match(det, ngrams, byteMap);
0354: }
0355: }
0356:
0357: static class CharsetRecog_8859_1_it extends CharsetRecog_8859_1 {
0358: private static int[] ngrams = { 0x20616C, 0x206368, 0x20636F,
0359: 0x206465, 0x206469, 0x206520, 0x20696C, 0x20696E,
0360: 0x206C61, 0x207065, 0x207072, 0x20756E, 0x612063,
0361: 0x612064, 0x612070, 0x612073, 0x61746F, 0x636865,
0362: 0x636F6E, 0x64656C, 0x646920, 0x652061, 0x652063,
0363: 0x652064, 0x652069, 0x65206C, 0x652070, 0x652073,
0364: 0x656C20, 0x656C6C, 0x656E74, 0x657220, 0x686520,
0365: 0x692061, 0x692063, 0x692064, 0x692073, 0x696120,
0366: 0x696C20, 0x696E20, 0x696F6E, 0x6C6120, 0x6C6520,
0367: 0x6C6920, 0x6C6C61, 0x6E6520, 0x6E6920, 0x6E6F20,
0368: 0x6E7465, 0x6F2061, 0x6F2064, 0x6F2069, 0x6F2073,
0369: 0x6F6E20, 0x6F6E65, 0x706572, 0x726120, 0x726520,
0370: 0x736920, 0x746120, 0x746520, 0x746920, 0x746F20,
0371: 0x7A696F, };
0372:
0373: public String getLanguage() {
0374: return "it";
0375: }
0376:
0377: public int match(CharsetDetector det) {
0378: return match(det, ngrams, byteMap);
0379: }
0380: }
0381:
0382: static class CharsetRecog_8859_1_nl extends CharsetRecog_8859_1 {
0383: private static int[] ngrams = { 0x20616C, 0x206265, 0x206461,
0384: 0x206465, 0x206469, 0x206565, 0x20656E, 0x206765,
0385: 0x206865, 0x20696E, 0x206D61, 0x206D65, 0x206F70,
0386: 0x207465, 0x207661, 0x207665, 0x20766F, 0x207765,
0387: 0x207A69, 0x61616E, 0x616172, 0x616E20, 0x616E64,
0388: 0x617220, 0x617420, 0x636874, 0x646520, 0x64656E,
0389: 0x646572, 0x652062, 0x652076, 0x65656E, 0x656572,
0390: 0x656E20, 0x657220, 0x657273, 0x657420, 0x67656E,
0391: 0x686574, 0x696520, 0x696E20, 0x696E67, 0x697320,
0392: 0x6E2062, 0x6E2064, 0x6E2065, 0x6E2068, 0x6E206F,
0393: 0x6E2076, 0x6E6465, 0x6E6720, 0x6F6E64, 0x6F6F72,
0394: 0x6F7020, 0x6F7220, 0x736368, 0x737465, 0x742064,
0395: 0x746520, 0x74656E, 0x746572, 0x76616E, 0x766572,
0396: 0x766F6F, };
0397:
0398: public String getLanguage() {
0399: return "nl";
0400: }
0401:
0402: public int match(CharsetDetector det) {
0403: return match(det, ngrams, byteMap);
0404: }
0405: }
0406:
0407: static class CharsetRecog_8859_1_no extends CharsetRecog_8859_1 {
0408: private static int[] ngrams = { 0x206174, 0x206176, 0x206465,
0409: 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920,
0410: 0x206D65, 0x206F67, 0x2070E5, 0x207365, 0x20736B,
0411: 0x20736F, 0x207374, 0x207469, 0x207669, 0x20E520,
0412: 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E,
0413: 0x646574, 0x652073, 0x656420, 0x656E20, 0x656E65,
0414: 0x657220, 0x657265, 0x657420, 0x657474, 0x666F72,
0415: 0x67656E, 0x696B6B, 0x696C20, 0x696E67, 0x6B6520,
0416: 0x6B6B65, 0x6C6520, 0x6C6C65, 0x6D6564, 0x6D656E,
0417: 0x6E2073, 0x6E6520, 0x6E6720, 0x6E6765, 0x6E6E65,
0418: 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722073,
0419: 0x726520, 0x736F6D, 0x737465, 0x742073, 0x746520,
0420: 0x74656E, 0x746572, 0x74696C, 0x747420, 0x747465,
0421: 0x766572, };
0422:
0423: public String getLanguage() {
0424: return "no";
0425: }
0426:
0427: public int match(CharsetDetector det) {
0428: return match(det, ngrams, byteMap);
0429: }
0430: }
0431:
0432: static class CharsetRecog_8859_1_pt extends CharsetRecog_8859_1 {
0433: private static int[] ngrams = { 0x206120, 0x20636F, 0x206461,
0434: 0x206465, 0x20646F, 0x206520, 0x206573, 0x206D61,
0435: 0x206E6F, 0x206F20, 0x207061, 0x20706F, 0x207072,
0436: 0x207175, 0x207265, 0x207365, 0x20756D, 0x612061,
0437: 0x612063, 0x612064, 0x612070, 0x616465, 0x61646F,
0438: 0x616C20, 0x617220, 0x617261, 0x617320, 0x636F6D,
0439: 0x636F6E, 0x646120, 0x646520, 0x646F20, 0x646F73,
0440: 0x652061, 0x652064, 0x656D20, 0x656E74, 0x657320,
0441: 0x657374, 0x696120, 0x696361, 0x6D656E, 0x6E7465,
0442: 0x6E746F, 0x6F2061, 0x6F2063, 0x6F2064, 0x6F2065,
0443: 0x6F2070, 0x6F7320, 0x706172, 0x717565, 0x726120,
0444: 0x726573, 0x732061, 0x732064, 0x732065, 0x732070,
0445: 0x737461, 0x746520, 0x746F20, 0x756520, 0xE36F20,
0446: 0xE7E36F, };
0447:
0448: public String getLanguage() {
0449: return "pt";
0450: }
0451:
0452: public int match(CharsetDetector det) {
0453: return match(det, ngrams, byteMap);
0454: }
0455: }
0456:
0457: static class CharsetRecog_8859_1_sv extends CharsetRecog_8859_1 {
0458: private static int[] ngrams = { 0x206174, 0x206176, 0x206465,
0459: 0x20656E, 0x2066F6, 0x206861, 0x206920, 0x20696E,
0460: 0x206B6F, 0x206D65, 0x206F63, 0x2070E5, 0x20736B,
0461: 0x20736F, 0x207374, 0x207469, 0x207661, 0x207669,
0462: 0x20E472, 0x616465, 0x616E20, 0x616E64, 0x617220,
0463: 0x617474, 0x636820, 0x646520, 0x64656E, 0x646572,
0464: 0x646574, 0x656420, 0x656E20, 0x657220, 0x657420,
0465: 0x66F672, 0x67656E, 0x696C6C, 0x696E67, 0x6B6120,
0466: 0x6C6C20, 0x6D6564, 0x6E2073, 0x6E6120, 0x6E6465,
0467: 0x6E6720, 0x6E6765, 0x6E696E, 0x6F6368, 0x6F6D20,
0468: 0x6F6E20, 0x70E520, 0x722061, 0x722073, 0x726120,
0469: 0x736B61, 0x736F6D, 0x742073, 0x746120, 0x746520,
0470: 0x746572, 0x74696C, 0x747420, 0x766172, 0xE47220,
0471: 0xF67220, };
0472:
0473: public String getLanguage() {
0474: return "sv";
0475: }
0476:
0477: public int match(CharsetDetector det) {
0478: return match(det, ngrams, byteMap);
0479: }
0480: }
0481:
0482: abstract static class CharsetRecog_8859_2 extends CharsetRecog_sbcs {
0483: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
0484: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0485: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0486: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0487: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0488: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0489: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0490: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0491: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0492: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0493: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
0494: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0495: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0496: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0497: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0498: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0499: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0500: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0501: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0502: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0503: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0504: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0505: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0506: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0507: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0508: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0509: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0510: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0511: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0512: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0513: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0514: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0515: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0516: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0517: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0518: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0519: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0520: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0521: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0522: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0523: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB1,
0524: (byte) 0x20, (byte) 0xB3, (byte) 0x20, (byte) 0xB5,
0525: (byte) 0xB6, (byte) 0x20, (byte) 0x20, (byte) 0xB9,
0526: (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0x20,
0527: (byte) 0xBE, (byte) 0xBF, (byte) 0x20, (byte) 0xB1,
0528: (byte) 0x20, (byte) 0xB3, (byte) 0x20, (byte) 0xB5,
0529: (byte) 0xB6, (byte) 0xB7, (byte) 0x20, (byte) 0xB9,
0530: (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0x20,
0531: (byte) 0xBE, (byte) 0xBF, (byte) 0xE0, (byte) 0xE1,
0532: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0533: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0534: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0535: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
0536: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0537: (byte) 0xF6, (byte) 0x20, (byte) 0xF8, (byte) 0xF9,
0538: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
0539: (byte) 0xFE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
0540: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0541: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0542: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0543: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
0544: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0545: (byte) 0xF6, (byte) 0x20, (byte) 0xF8, (byte) 0xF9,
0546: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
0547: (byte) 0xFE, (byte) 0x20, };
0548:
0549: public String getName() {
0550: return haveC1Bytes ? "windows-1250" : "ISO-8859-2";
0551: }
0552: }
0553:
0554: static class CharsetRecog_8859_2_cs extends CharsetRecog_8859_2 {
0555: private static int[] ngrams = { 0x206120, 0x206279, 0x20646F,
0556: 0x206A65, 0x206E61, 0x206E65, 0x206F20, 0x206F64,
0557: 0x20706F, 0x207072, 0x2070F8, 0x20726F, 0x207365,
0558: 0x20736F, 0x207374, 0x20746F, 0x207620, 0x207679,
0559: 0x207A61, 0x612070, 0x636520, 0x636820, 0x652070,
0560: 0x652073, 0x652076, 0x656D20, 0x656EED, 0x686F20,
0561: 0x686F64, 0x697374, 0x6A6520, 0x6B7465, 0x6C6520,
0562: 0x6C6920, 0x6E6120, 0x6EE920, 0x6EEC20, 0x6EED20,
0563: 0x6F2070, 0x6F646E, 0x6F6A69, 0x6F7374, 0x6F7520,
0564: 0x6F7661, 0x706F64, 0x706F6A, 0x70726F, 0x70F865,
0565: 0x736520, 0x736F75, 0x737461, 0x737469, 0x73746E,
0566: 0x746572, 0x746EED, 0x746F20, 0x752070, 0xBE6520,
0567: 0xE16EED, 0xE9686F, 0xED2070, 0xED2073, 0xED6D20,
0568: 0xF86564, };
0569:
0570: public String getLanguage() {
0571: return "cs";
0572: }
0573:
0574: public int match(CharsetDetector det) {
0575: return match(det, ngrams, byteMap);
0576: }
0577: }
0578:
0579: static class CharsetRecog_8859_2_hu extends CharsetRecog_8859_2 {
0580: private static int[] ngrams = { 0x206120, 0x20617A, 0x206265,
0581: 0x206567, 0x20656C, 0x206665, 0x206861, 0x20686F,
0582: 0x206973, 0x206B65, 0x206B69, 0x206BF6, 0x206C65,
0583: 0x206D61, 0x206D65, 0x206D69, 0x206E65, 0x20737A,
0584: 0x207465, 0x20E973, 0x612061, 0x61206B, 0x61206D,
0585: 0x612073, 0x616B20, 0x616E20, 0x617A20, 0x62616E,
0586: 0x62656E, 0x656779, 0x656B20, 0x656C20, 0x656C65,
0587: 0x656D20, 0x656E20, 0x657265, 0x657420, 0x657465,
0588: 0x657474, 0x677920, 0x686F67, 0x696E74, 0x697320,
0589: 0x6B2061, 0x6BF67A, 0x6D6567, 0x6D696E, 0x6E2061,
0590: 0x6E616B, 0x6E656B, 0x6E656D, 0x6E7420, 0x6F6779,
0591: 0x732061, 0x737A65, 0x737A74, 0x737AE1, 0x73E967,
0592: 0x742061, 0x747420, 0x74E173, 0x7A6572, 0xE16E20,
0593: 0xE97320, };
0594:
0595: public String getLanguage() {
0596: return "hu";
0597: }
0598:
0599: public int match(CharsetDetector det) {
0600: return match(det, ngrams, byteMap);
0601: }
0602: }
0603:
0604: static class CharsetRecog_8859_2_pl extends CharsetRecog_8859_2 {
0605: private static int[] ngrams = { 0x20637A, 0x20646F, 0x206920,
0606: 0x206A65, 0x206B6F, 0x206D61, 0x206D69, 0x206E61,
0607: 0x206E69, 0x206F64, 0x20706F, 0x207072, 0x207369,
0608: 0x207720, 0x207769, 0x207779, 0x207A20, 0x207A61,
0609: 0x612070, 0x612077, 0x616E69, 0x636820, 0x637A65,
0610: 0x637A79, 0x646F20, 0x647A69, 0x652070, 0x652073,
0611: 0x652077, 0x65207A, 0x65676F, 0x656A20, 0x656D20,
0612: 0x656E69, 0x676F20, 0x696120, 0x696520, 0x69656A,
0613: 0x6B6120, 0x6B6920, 0x6B6965, 0x6D6965, 0x6E6120,
0614: 0x6E6961, 0x6E6965, 0x6F2070, 0x6F7761, 0x6F7769,
0615: 0x706F6C, 0x707261, 0x70726F, 0x70727A, 0x727A65,
0616: 0x727A79, 0x7369EA, 0x736B69, 0x737461, 0x776965,
0617: 0x796368, 0x796D20, 0x7A6520, 0x7A6965, 0x7A7920,
0618: 0xF37720, };
0619:
0620: public String getLanguage() {
0621: return "pl";
0622: }
0623:
0624: public int match(CharsetDetector det) {
0625: return match(det, ngrams, byteMap);
0626: }
0627: }
0628:
0629: static class CharsetRecog_8859_2_ro extends CharsetRecog_8859_2 {
0630: private static int[] ngrams = { 0x206120, 0x206163, 0x206361,
0631: 0x206365, 0x20636F, 0x206375, 0x206465, 0x206469,
0632: 0x206C61, 0x206D61, 0x207065, 0x207072, 0x207365,
0633: 0x2073E3, 0x20756E, 0x20BA69, 0x20EE6E, 0x612063,
0634: 0x612064, 0x617265, 0x617420, 0x617465, 0x617520,
0635: 0x636172, 0x636F6E, 0x637520, 0x63E320, 0x646520,
0636: 0x652061, 0x652063, 0x652064, 0x652070, 0x652073,
0637: 0x656120, 0x656920, 0x656C65, 0x656E74, 0x657374,
0638: 0x692061, 0x692063, 0x692064, 0x692070, 0x696520,
0639: 0x696920, 0x696E20, 0x6C6120, 0x6C6520, 0x6C6F72,
0640: 0x6C7569, 0x6E6520, 0x6E7472, 0x6F7220, 0x70656E,
0641: 0x726520, 0x726561, 0x727520, 0x73E320, 0x746520,
0642: 0x747275, 0x74E320, 0x756920, 0x756C20, 0xBA6920,
0643: 0xEE6E20, };
0644:
0645: public String getLanguage() {
0646: return "ro";
0647: }
0648:
0649: public int match(CharsetDetector det) {
0650: return match(det, ngrams, byteMap);
0651: }
0652: }
0653:
0654: abstract static class CharsetRecog_8859_5 extends CharsetRecog_sbcs {
0655: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
0656: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0657: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0658: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0659: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0660: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0661: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0662: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0663: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0664: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0665: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
0666: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0667: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0668: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0669: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0670: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0671: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0672: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0673: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0674: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0675: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0676: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0677: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0678: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0679: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0680: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0681: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0682: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0683: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0684: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0685: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0686: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0687: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0688: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0689: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0690: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0691: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0692: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0693: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0694: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0695: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xF1,
0696: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0697: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
0698: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x20,
0699: (byte) 0xFE, (byte) 0xFF, (byte) 0xD0, (byte) 0xD1,
0700: (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5,
0701: (byte) 0xD6, (byte) 0xD7, (byte) 0xD8, (byte) 0xD9,
0702: (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD,
0703: (byte) 0xDE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
0704: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0705: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0706: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0707: (byte) 0xEE, (byte) 0xEF, (byte) 0xD0, (byte) 0xD1,
0708: (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5,
0709: (byte) 0xD6, (byte) 0xD7, (byte) 0xD8, (byte) 0xD9,
0710: (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD,
0711: (byte) 0xDE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
0712: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0713: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0714: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0715: (byte) 0xEE, (byte) 0xEF, (byte) 0x20, (byte) 0xF1,
0716: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0717: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
0718: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x20,
0719: (byte) 0xFE, (byte) 0xFF, };
0720:
0721: public String getName() {
0722: return "ISO-8859-5";
0723: }
0724: }
0725:
0726: static class CharsetRecog_8859_5_ru extends CharsetRecog_8859_5 {
0727: private static int[] ngrams = { 0x20D220, 0x20D2DE, 0x20D4DE,
0728: 0x20D7D0, 0x20D820, 0x20DAD0, 0x20DADE, 0x20DDD0,
0729: 0x20DDD5, 0x20DED1, 0x20DFDE, 0x20DFE0, 0x20E0D0,
0730: 0x20E1DE, 0x20E1E2, 0x20E2DE, 0x20E7E2, 0x20EDE2,
0731: 0xD0DDD8, 0xD0E2EC, 0xD3DE20, 0xD5DBEC, 0xD5DDD8,
0732: 0xD5E1E2, 0xD5E220, 0xD820DF, 0xD8D520, 0xD8D820,
0733: 0xD8EF20, 0xDBD5DD, 0xDBD820, 0xDBECDD, 0xDDD020,
0734: 0xDDD520, 0xDDD8D5, 0xDDD8EF, 0xDDDE20, 0xDDDED2,
0735: 0xDE20D2, 0xDE20DF, 0xDE20E1, 0xDED220, 0xDED2D0,
0736: 0xDED3DE, 0xDED920, 0xDEDBEC, 0xDEDC20, 0xDEE1E2,
0737: 0xDFDEDB, 0xDFE0D5, 0xDFE0D8, 0xDFE0DE, 0xE0D0D2,
0738: 0xE0D5D4, 0xE1E2D0, 0xE1E2D2, 0xE1E2D8, 0xE1EF20,
0739: 0xE2D5DB, 0xE2DE20, 0xE2DEE0, 0xE2EC20, 0xE7E2DE,
0740: 0xEBE520, };
0741:
0742: public String getLanguage() {
0743: return "ru";
0744: }
0745:
0746: public int match(CharsetDetector det) {
0747: return match(det, ngrams, byteMap);
0748: }
0749: }
0750:
0751: abstract static class CharsetRecog_8859_6 extends CharsetRecog_sbcs {
0752: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
0753: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0754: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0755: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0756: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0757: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0758: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0759: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0760: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0761: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0762: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
0763: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0764: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0765: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0766: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0767: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0768: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0769: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0770: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0771: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0772: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0773: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0774: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0775: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0776: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0777: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0778: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0779: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0780: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0781: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0782: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0783: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0784: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0785: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0786: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0787: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0788: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0789: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0790: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0791: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0792: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0793: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0794: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0795: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0796: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0797: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0798: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0799: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0800: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xC1,
0801: (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5,
0802: (byte) 0xC6, (byte) 0xC7, (byte) 0xC8, (byte) 0xC9,
0803: (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD,
0804: (byte) 0xCE, (byte) 0xCF, (byte) 0xD0, (byte) 0xD1,
0805: (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5,
0806: (byte) 0xD6, (byte) 0xD7, (byte) 0xD8, (byte) 0xD9,
0807: (byte) 0xDA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0808: (byte) 0x20, (byte) 0x20, (byte) 0xE0, (byte) 0xE1,
0809: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0810: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0811: (byte) 0xEA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0812: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0813: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0814: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0815: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0816: (byte) 0x20, (byte) 0x20, };
0817:
0818: public String getName() {
0819: return "ISO-8859-6";
0820: }
0821: }
0822:
0823: static class CharsetRecog_8859_6_ar extends CharsetRecog_8859_6 {
0824: private static int[] ngrams = { 0x20C7E4, 0x20C7E6, 0x20C8C7,
0825: 0x20D9E4, 0x20E1EA, 0x20E4E4, 0x20E5E6, 0x20E8C7,
0826: 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E420,
0827: 0xC7E4C3, 0xC7E4C7, 0xC7E4C8, 0xC7E4CA, 0xC7E4CC,
0828: 0xC7E4CD, 0xC7E4CF, 0xC7E4D3, 0xC7E4D9, 0xC7E4E2,
0829: 0xC7E4E5, 0xC7E4E8, 0xC7E4EA, 0xC7E520, 0xC7E620,
0830: 0xC7E6CA, 0xC820C7, 0xC920C7, 0xC920E1, 0xC920E4,
0831: 0xC920E5, 0xC920E8, 0xCA20C7, 0xCF20C7, 0xCFC920,
0832: 0xD120C7, 0xD1C920, 0xD320C7, 0xD920C7, 0xD9E4E9,
0833: 0xE1EA20, 0xE420C7, 0xE4C920, 0xE4E920, 0xE4EA20,
0834: 0xE520C7, 0xE5C720, 0xE5C920, 0xE5E620, 0xE620C7,
0835: 0xE720C7, 0xE7C720, 0xE8C7E4, 0xE8E620, 0xE920C7,
0836: 0xEA20C7, 0xEA20E5, 0xEA20E8, 0xEAC920, 0xEAD120,
0837: 0xEAE620, };
0838:
0839: public String getLanguage() {
0840: return "ar";
0841: }
0842:
0843: public int match(CharsetDetector det) {
0844: return match(det, ngrams, byteMap);
0845: }
0846: }
0847:
0848: abstract static class CharsetRecog_8859_7 extends CharsetRecog_sbcs {
0849: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
0850: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0851: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0852: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0853: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0854: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0855: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0856: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0857: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0858: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0859: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
0860: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0861: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0862: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0863: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0864: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0865: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0866: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0867: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0868: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0869: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0870: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0871: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0872: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0873: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0874: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0875: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0876: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0877: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0878: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0879: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0880: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0881: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0882: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0883: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0884: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0885: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0886: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0887: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0888: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0889: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xA1,
0890: (byte) 0xA2, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0891: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0892: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0893: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0894: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0895: (byte) 0xDC, (byte) 0x20, (byte) 0xDD, (byte) 0xDE,
0896: (byte) 0xDF, (byte) 0x20, (byte) 0xFC, (byte) 0x20,
0897: (byte) 0xFD, (byte) 0xFE, (byte) 0xC0, (byte) 0xE1,
0898: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0899: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0900: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0901: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
0902: (byte) 0x20, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0903: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
0904: (byte) 0xFA, (byte) 0xFB, (byte) 0xDC, (byte) 0xDD,
0905: (byte) 0xDE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
0906: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
0907: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
0908: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
0909: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
0910: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
0911: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
0912: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
0913: (byte) 0xFE, (byte) 0x20, };
0914:
0915: public String getName() {
0916: return haveC1Bytes ? "windows-1253" : "ISO-8859-7";
0917: }
0918: }
0919:
0920: static class CharsetRecog_8859_7_el extends CharsetRecog_8859_7 {
0921: private static int[] ngrams = { 0x20E1ED, 0x20E1F0, 0x20E3E9,
0922: 0x20E4E9, 0x20E5F0, 0x20E720, 0x20EAE1, 0x20ECE5,
0923: 0x20EDE1, 0x20EF20, 0x20F0E1, 0x20F0EF, 0x20F0F1,
0924: 0x20F3F4, 0x20F3F5, 0x20F4E7, 0x20F4EF, 0xDFE120,
0925: 0xE120E1, 0xE120F4, 0xE1E920, 0xE1ED20, 0xE1F0FC,
0926: 0xE1F220, 0xE3E9E1, 0xE5E920, 0xE5F220, 0xE720F4,
0927: 0xE7ED20, 0xE7F220, 0xE920F4, 0xE9E120, 0xE9EADE,
0928: 0xE9F220, 0xEAE1E9, 0xEAE1F4, 0xECE520, 0xED20E1,
0929: 0xED20E5, 0xED20F0, 0xEDE120, 0xEFF220, 0xEFF520,
0930: 0xF0EFF5, 0xF0F1EF, 0xF0FC20, 0xF220E1, 0xF220E5,
0931: 0xF220EA, 0xF220F0, 0xF220F4, 0xF3E520, 0xF3E720,
0932: 0xF3F4EF, 0xF4E120, 0xF4E1E9, 0xF4E7ED, 0xF4E7F2,
0933: 0xF4E9EA, 0xF4EF20, 0xF4EFF5, 0xF4F9ED, 0xF9ED20,
0934: 0xFEED20, };
0935:
0936: public String getLanguage() {
0937: return "el";
0938: }
0939:
0940: public int match(CharsetDetector det) {
0941: return match(det, ngrams, byteMap);
0942: }
0943: }
0944:
0945: abstract static class CharsetRecog_8859_8 extends CharsetRecog_sbcs {
0946: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
0947: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0948: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0949: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0950: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0951: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0952: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0953: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0954: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0955: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0956: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
0957: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0958: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0959: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0960: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0961: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0962: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0963: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0964: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0965: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0966: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0967: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0968: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0969: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0970: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
0971: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
0972: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
0973: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
0974: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
0975: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
0976: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
0977: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0978: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0979: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0980: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0981: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0982: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0983: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0984: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0985: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0986: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0987: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0988: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0989: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0990: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0991: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5,
0992: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0993: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0994: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0995: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0996: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0997: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0998: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
0999: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1000: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1001: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1002: (byte) 0x20, (byte) 0x20, (byte) 0xE0, (byte) 0xE1,
1003: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
1004: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
1005: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
1006: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
1007: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
1008: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
1009: (byte) 0xFA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1010: (byte) 0x20, (byte) 0x20, };
1011:
1012: public String getName() {
1013: return haveC1Bytes ? "windows-1255" : "ISO-8859-8";
1014: }
1015: }
1016:
1017: static class CharsetRecog_8859_8_I_he extends CharsetRecog_8859_8 {
1018: private static int[] ngrams = { 0x20E0E5, 0x20E0E7, 0x20E0E9,
1019: 0x20E0FA, 0x20E1E9, 0x20E1EE, 0x20E4E0, 0x20E4E5,
1020: 0x20E4E9, 0x20E4EE, 0x20E4F2, 0x20E4F9, 0x20E4FA,
1021: 0x20ECE0, 0x20ECE4, 0x20EEE0, 0x20F2EC, 0x20F9EC,
1022: 0xE0FA20, 0xE420E0, 0xE420E1, 0xE420E4, 0xE420EC,
1023: 0xE420EE, 0xE420F9, 0xE4E5E0, 0xE5E020, 0xE5ED20,
1024: 0xE5EF20, 0xE5F820, 0xE5FA20, 0xE920E4, 0xE9E420,
1025: 0xE9E5FA, 0xE9E9ED, 0xE9ED20, 0xE9EF20, 0xE9F820,
1026: 0xE9FA20, 0xEC20E0, 0xEC20E4, 0xECE020, 0xECE420,
1027: 0xED20E0, 0xED20E1, 0xED20E4, 0xED20EC, 0xED20EE,
1028: 0xED20F9, 0xEEE420, 0xEF20E4, 0xF0E420, 0xF0E920,
1029: 0xF0E9ED, 0xF2EC20, 0xF820E4, 0xF8E9ED, 0xF9EC20,
1030: 0xFA20E0, 0xFA20E1, 0xFA20E4, 0xFA20EC, 0xFA20EE,
1031: 0xFA20F9, };
1032:
1033: public String getName() {
1034: return haveC1Bytes ? "windows-1255"
1035: : /*"ISO-8859-8-I"*/"ISO-8859-8";
1036: }
1037:
1038: public String getLanguage() {
1039: return "he";
1040: }
1041:
1042: public int match(CharsetDetector det) {
1043: return match(det, ngrams, byteMap);
1044: }
1045: }
1046:
1047: static class CharsetRecog_8859_8_he extends CharsetRecog_8859_8 {
1048: private static int[] ngrams = { 0x20E0E5, 0x20E0EC, 0x20E4E9,
1049: 0x20E4EC, 0x20E4EE, 0x20E4F0, 0x20E9F0, 0x20ECF2,
1050: 0x20ECF9, 0x20EDE5, 0x20EDE9, 0x20EFE5, 0x20EFE9,
1051: 0x20F8E5, 0x20F8E9, 0x20FAE0, 0x20FAE5, 0x20FAE9,
1052: 0xE020E4, 0xE020EC, 0xE020ED, 0xE020FA, 0xE0E420,
1053: 0xE0E5E4, 0xE0EC20, 0xE0EE20, 0xE120E4, 0xE120ED,
1054: 0xE120FA, 0xE420E4, 0xE420E9, 0xE420EC, 0xE420ED,
1055: 0xE420EF, 0xE420F8, 0xE420FA, 0xE4EC20, 0xE5E020,
1056: 0xE5E420, 0xE7E020, 0xE9E020, 0xE9E120, 0xE9E420,
1057: 0xEC20E4, 0xEC20ED, 0xEC20FA, 0xECF220, 0xECF920,
1058: 0xEDE9E9, 0xEDE9F0, 0xEDE9F8, 0xEE20E4, 0xEE20ED,
1059: 0xEE20FA, 0xEEE120, 0xEEE420, 0xF2E420, 0xF920E4,
1060: 0xF920ED, 0xF920FA, 0xF9E420, 0xFAE020, 0xFAE420,
1061: 0xFAE5E9, };
1062:
1063: public String getLanguage() {
1064: return "he";
1065: }
1066:
1067: public int match(CharsetDetector det) {
1068: return match(det, ngrams, byteMap);
1069: }
1070: }
1071:
1072: abstract static class CharsetRecog_8859_9 extends CharsetRecog_sbcs {
1073: protected static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
1074: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1075: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1076: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1077: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1078: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1079: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1080: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1081: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1082: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1083: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
1084: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1085: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1086: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1087: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1088: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1089: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1090: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1091: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1092: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1093: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1094: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1095: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1096: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1097: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1098: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1099: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1100: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1101: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1102: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1103: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1104: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1105: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1106: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1107: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1108: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1109: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1110: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1111: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1112: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1113: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1114: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1115: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1116: (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1117: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1118: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5,
1119: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1120: (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1121: (byte) 0x20, (byte) 0x20, (byte) 0xE0, (byte) 0xE1,
1122: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
1123: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
1124: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
1125: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
1126: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
1127: (byte) 0xF6, (byte) 0x20, (byte) 0xF8, (byte) 0xF9,
1128: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x69,
1129: (byte) 0xFE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
1130: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
1131: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
1132: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
1133: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
1134: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
1135: (byte) 0xF6, (byte) 0x20, (byte) 0xF8, (byte) 0xF9,
1136: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
1137: (byte) 0xFE, (byte) 0xFF, };
1138:
1139: public String getName() {
1140: return haveC1Bytes ? "windows-1254" : "ISO-8859-9";
1141: }
1142: }
1143:
1144: static class CharsetRecog_8859_9_tr extends CharsetRecog_8859_9 {
1145: private static int[] ngrams = { 0x206261, 0x206269, 0x206275,
1146: 0x206461, 0x206465, 0x206765, 0x206861, 0x20696C,
1147: 0x206B61, 0x206B6F, 0x206D61, 0x206F6C, 0x207361,
1148: 0x207461, 0x207665, 0x207961, 0x612062, 0x616B20,
1149: 0x616C61, 0x616D61, 0x616E20, 0x616EFD, 0x617220,
1150: 0x617261, 0x6172FD, 0x6173FD, 0x617961, 0x626972,
1151: 0x646120, 0x646520, 0x646920, 0x652062, 0x65206B,
1152: 0x656469, 0x656E20, 0x657220, 0x657269, 0x657369,
1153: 0x696C65, 0x696E20, 0x696E69, 0x697220, 0x6C616E,
1154: 0x6C6172, 0x6C6520, 0x6C6572, 0x6E2061, 0x6E2062,
1155: 0x6E206B, 0x6E6461, 0x6E6465, 0x6E6520, 0x6E6920,
1156: 0x6E696E, 0x6EFD20, 0x72696E, 0x72FD6E, 0x766520,
1157: 0x796120, 0x796F72, 0xFD6E20, 0xFD6E64, 0xFD6EFD,
1158: 0xFDF0FD, };
1159:
1160: public String getLanguage() {
1161: return "tr";
1162: }
1163:
1164: public int match(CharsetDetector det) {
1165: return match(det, ngrams, byteMap);
1166: }
1167: }
1168:
1169: static class CharsetRecog_windows_1251 extends CharsetRecog_sbcs {
1170: private static int[] ngrams = { 0x20E220, 0x20E2EE, 0x20E4EE,
1171: 0x20E7E0, 0x20E820, 0x20EAE0, 0x20EAEE, 0x20EDE0,
1172: 0x20EDE5, 0x20EEE1, 0x20EFEE, 0x20EFF0, 0x20F0E0,
1173: 0x20F1EE, 0x20F1F2, 0x20F2EE, 0x20F7F2, 0x20FDF2,
1174: 0xE0EDE8, 0xE0F2FC, 0xE3EE20, 0xE5EBFC, 0xE5EDE8,
1175: 0xE5F1F2, 0xE5F220, 0xE820EF, 0xE8E520, 0xE8E820,
1176: 0xE8FF20, 0xEBE5ED, 0xEBE820, 0xEBFCED, 0xEDE020,
1177: 0xEDE520, 0xEDE8E5, 0xEDE8FF, 0xEDEE20, 0xEDEEE2,
1178: 0xEE20E2, 0xEE20EF, 0xEE20F1, 0xEEE220, 0xEEE2E0,
1179: 0xEEE3EE, 0xEEE920, 0xEEEBFC, 0xEEEC20, 0xEEF1F2,
1180: 0xEFEEEB, 0xEFF0E5, 0xEFF0E8, 0xEFF0EE, 0xF0E0E2,
1181: 0xF0E5E4, 0xF1F2E0, 0xF1F2E2, 0xF1F2E8, 0xF1FF20,
1182: 0xF2E5EB, 0xF2EE20, 0xF2EEF0, 0xF2FC20, 0xF7F2EE,
1183: 0xFBF520, };
1184:
1185: private static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
1186: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1187: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1188: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1189: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1190: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1191: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1192: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1193: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1194: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1195: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
1196: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1197: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1198: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1199: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1200: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1201: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1202: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1203: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1204: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1205: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1206: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1207: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1208: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1209: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1210: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1211: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1212: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1213: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1214: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1215: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1216: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1217: (byte) 0x20, (byte) 0x20, (byte) 0x90, (byte) 0x83,
1218: (byte) 0x20, (byte) 0x83, (byte) 0x20, (byte) 0x20,
1219: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1220: (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x9D,
1221: (byte) 0x9E, (byte) 0x9F, (byte) 0x90, (byte) 0x20,
1222: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1223: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1224: (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x9D,
1225: (byte) 0x9E, (byte) 0x9F, (byte) 0x20, (byte) 0xA2,
1226: (byte) 0xA2, (byte) 0xBC, (byte) 0x20, (byte) 0xB4,
1227: (byte) 0x20, (byte) 0x20, (byte) 0xB8, (byte) 0x20,
1228: (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1229: (byte) 0x20, (byte) 0xBF, (byte) 0x20, (byte) 0x20,
1230: (byte) 0xB3, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5,
1231: (byte) 0x20, (byte) 0x20, (byte) 0xB8, (byte) 0x20,
1232: (byte) 0xBA, (byte) 0x20, (byte) 0xBC, (byte) 0xBE,
1233: (byte) 0xBE, (byte) 0xBF, (byte) 0xE0, (byte) 0xE1,
1234: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
1235: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
1236: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
1237: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
1238: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
1239: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
1240: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
1241: (byte) 0xFE, (byte) 0xFF, (byte) 0xE0, (byte) 0xE1,
1242: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
1243: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
1244: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
1245: (byte) 0xEE, (byte) 0xEF, (byte) 0xF0, (byte) 0xF1,
1246: (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5,
1247: (byte) 0xF6, (byte) 0xF7, (byte) 0xF8, (byte) 0xF9,
1248: (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD,
1249: (byte) 0xFE, (byte) 0xFF, };
1250:
1251: public String getName() {
1252: return "windows-1251";
1253: }
1254:
1255: public String getLanguage() {
1256: return "ru";
1257: }
1258:
1259: public int match(CharsetDetector det) {
1260: return match(det, ngrams, byteMap);
1261: }
1262: }
1263:
1264: static class CharsetRecog_windows_1256 extends CharsetRecog_sbcs {
1265: private static int[] ngrams = { 0x20C7E1, 0x20C7E4, 0x20C8C7,
1266: 0x20DAE1, 0x20DDED, 0x20E1E1, 0x20E3E4, 0x20E6C7,
1267: 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E120,
1268: 0xC7E1C3, 0xC7E1C7, 0xC7E1C8, 0xC7E1CA, 0xC7E1CC,
1269: 0xC7E1CD, 0xC7E1CF, 0xC7E1D3, 0xC7E1DA, 0xC7E1DE,
1270: 0xC7E1E3, 0xC7E1E6, 0xC7E1ED, 0xC7E320, 0xC7E420,
1271: 0xC7E4CA, 0xC820C7, 0xC920C7, 0xC920DD, 0xC920E1,
1272: 0xC920E3, 0xC920E6, 0xCA20C7, 0xCF20C7, 0xCFC920,
1273: 0xD120C7, 0xD1C920, 0xD320C7, 0xDA20C7, 0xDAE1EC,
1274: 0xDDED20, 0xE120C7, 0xE1C920, 0xE1EC20, 0xE1ED20,
1275: 0xE320C7, 0xE3C720, 0xE3C920, 0xE3E420, 0xE420C7,
1276: 0xE520C7, 0xE5C720, 0xE6C7E1, 0xE6E420, 0xEC20C7,
1277: 0xED20C7, 0xED20E3, 0xED20E6, 0xEDC920, 0xEDD120,
1278: 0xEDE420, };
1279:
1280: private static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
1281: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1282: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1283: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1284: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1285: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1286: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1287: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1288: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1289: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1290: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
1291: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1292: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1293: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1294: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1295: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1296: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1297: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1298: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1299: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1300: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1301: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1302: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1303: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1304: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1305: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1306: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1307: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1308: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1309: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1310: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1311: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1312: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x81,
1313: (byte) 0x20, (byte) 0x83, (byte) 0x20, (byte) 0x20,
1314: (byte) 0x20, (byte) 0x20, (byte) 0x88, (byte) 0x20,
1315: (byte) 0x8A, (byte) 0x20, (byte) 0x9C, (byte) 0x8D,
1316: (byte) 0x8E, (byte) 0x8F, (byte) 0x90, (byte) 0x20,
1317: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1318: (byte) 0x20, (byte) 0x20, (byte) 0x98, (byte) 0x20,
1319: (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x20,
1320: (byte) 0x20, (byte) 0x9F, (byte) 0x20, (byte) 0x20,
1321: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1322: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1323: (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1324: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1325: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5,
1326: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1327: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1328: (byte) 0x20, (byte) 0x20, (byte) 0xC0, (byte) 0xC1,
1329: (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5,
1330: (byte) 0xC6, (byte) 0xC7, (byte) 0xC8, (byte) 0xC9,
1331: (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD,
1332: (byte) 0xCE, (byte) 0xCF, (byte) 0xD0, (byte) 0xD1,
1333: (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5,
1334: (byte) 0xD6, (byte) 0x20, (byte) 0xD8, (byte) 0xD9,
1335: (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD,
1336: (byte) 0xDE, (byte) 0xDF, (byte) 0xE0, (byte) 0xE1,
1337: (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5,
1338: (byte) 0xE6, (byte) 0xE7, (byte) 0xE8, (byte) 0xE9,
1339: (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED,
1340: (byte) 0xEE, (byte) 0xEF, (byte) 0x20, (byte) 0x20,
1341: (byte) 0x20, (byte) 0x20, (byte) 0xF4, (byte) 0x20,
1342: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xF9,
1343: (byte) 0x20, (byte) 0xFB, (byte) 0xFC, (byte) 0x20,
1344: (byte) 0x20, (byte) 0xFF, };
1345:
1346: public String getName() {
1347: return "windows-1256";
1348: }
1349:
1350: public String getLanguage() {
1351: return "ar";
1352: }
1353:
1354: public int match(CharsetDetector det) {
1355: return match(det, ngrams, byteMap);
1356: }
1357: }
1358:
1359: static class CharsetRecog_KOI8_R extends CharsetRecog_sbcs {
1360: private static int[] ngrams = { 0x20C4CF, 0x20C920, 0x20CBC1,
1361: 0x20CBCF, 0x20CEC1, 0x20CEC5, 0x20CFC2, 0x20D0CF,
1362: 0x20D0D2, 0x20D2C1, 0x20D3CF, 0x20D3D4, 0x20D4CF,
1363: 0x20D720, 0x20D7CF, 0x20DAC1, 0x20DCD4, 0x20DED4,
1364: 0xC1CEC9, 0xC1D4D8, 0xC5CCD8, 0xC5CEC9, 0xC5D3D4,
1365: 0xC5D420, 0xC7CF20, 0xC920D0, 0xC9C520, 0xC9C920,
1366: 0xC9D120, 0xCCC5CE, 0xCCC920, 0xCCD8CE, 0xCEC120,
1367: 0xCEC520, 0xCEC9C5, 0xCEC9D1, 0xCECF20, 0xCECFD7,
1368: 0xCF20D0, 0xCF20D3, 0xCF20D7, 0xCFC7CF, 0xCFCA20,
1369: 0xCFCCD8, 0xCFCD20, 0xCFD3D4, 0xCFD720, 0xCFD7C1,
1370: 0xD0CFCC, 0xD0D2C5, 0xD0D2C9, 0xD0D2CF, 0xD2C1D7,
1371: 0xD2C5C4, 0xD3D120, 0xD3D4C1, 0xD3D4C9, 0xD3D4D7,
1372: 0xD4C5CC, 0xD4CF20, 0xD4CFD2, 0xD4D820, 0xD9C820,
1373: 0xDED4CF, };
1374:
1375: private static byte[] byteMap = { (byte) 0x20, (byte) 0x20,
1376: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1377: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1378: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1379: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1380: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1381: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1382: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1383: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1384: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1385: (byte) 0x20, (byte) 0x00, (byte) 0x20, (byte) 0x20,
1386: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1387: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1388: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1389: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1390: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1391: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1392: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1393: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1394: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1395: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1396: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1397: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1398: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1399: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x61,
1400: (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65,
1401: (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69,
1402: (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D,
1403: (byte) 0x6E, (byte) 0x6F, (byte) 0x70, (byte) 0x71,
1404: (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75,
1405: (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79,
1406: (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1407: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1408: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1409: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1410: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1411: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1412: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1413: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1414: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1415: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1416: (byte) 0x20, (byte) 0xA3, (byte) 0x20, (byte) 0x20,
1417: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1418: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1419: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1420: (byte) 0x20, (byte) 0xA3, (byte) 0x20, (byte) 0x20,
1421: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1422: (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
1423: (byte) 0x20, (byte) 0x20, (byte) 0xC0, (byte) 0xC1,
1424: (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5,
1425: (byte) 0xC6, (byte) 0xC7, (byte) 0xC8, (byte) 0xC9,
1426: (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD,
1427: (byte) 0xCE, (byte) 0xCF, (byte) 0xD0, (byte) 0xD1,
1428: (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5,
1429: (byte) 0xD6, (byte) 0xD7, (byte) 0xD8, (byte) 0xD9,
1430: (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD,
1431: (byte) 0xDE, (byte) 0xDF, (byte) 0xC0, (byte) 0xC1,
1432: (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5,
1433: (byte) 0xC6, (byte) 0xC7, (byte) 0xC8, (byte) 0xC9,
1434: (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD,
1435: (byte) 0xCE, (byte) 0xCF, (byte) 0xD0, (byte) 0xD1,
1436: (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5,
1437: (byte) 0xD6, (byte) 0xD7, (byte) 0xD8, (byte) 0xD9,
1438: (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD,
1439: (byte) 0xDE, (byte) 0xDF, };
1440:
1441: public String getName() {
1442: return "KOI8-R";
1443: }
1444:
1445: public String getLanguage() {
1446: return "ru";
1447: }
1448:
1449: public int match(CharsetDetector det) {
1450: return match(det, ngrams, byteMap);
1451: }
1452: }
1453: }
|