Source Code Cross Referenced for CharsetRecog_sbcs.java in  » Internationalization-Localization » icu4j » com » ibm » icu » text » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Internationalization Localization » icu4j » com.ibm.icu.text 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


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:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.