in baremaps-core/src/main/java/org/apache/baremaps/storage/shapefile/internal/DbaseByteReader.java [373:437]
private String toCodePage(byte pageCodeBinaryValue) {
// From http://trac.osgeo.org/gdal/ticket/2864
HashMap<Integer, String> knownConversions = new HashMap<>();
knownConversions.put(0x01, "cp437"); // U.S. MS–DOS
knownConversions.put(0x02, "cp850"); // International MS–DOS
knownConversions.put(0x03, "cp1252"); // Windows ANSI
knownConversions.put(0x08, "cp865"); // Danish OEM
knownConversions.put(0x09, "cp437"); // Dutch OEM
knownConversions.put(0x0a, "cp850"); // Dutch OEM*
knownConversions.put(0x0b, "cp437"); // Finnish OEM
knownConversions.put(0x0d, "cp437"); // French OEM
knownConversions.put(0x0e, "cp850"); // French OEM*
knownConversions.put(0x0f, "cp437"); // German OEM
knownConversions.put(0x10, "cp850"); // German OEM*
knownConversions.put(0x11, "cp437"); // Italian OEM
knownConversions.put(0x12, "cp850"); // Italian OEM*
knownConversions.put(0x13, "cp932"); // Japanese Shift-JIS
knownConversions.put(0x14, "cp850"); // Spanish OEM*
knownConversions.put(0x15, "cp437"); // Swedish OEM
knownConversions.put(0x16, "cp850"); // Swedish OEM*
knownConversions.put(0x17, "cp865"); // Norwegian OEM
knownConversions.put(0x18, "cp437"); // Spanish OEM
knownConversions.put(0x19, "cp437"); // English OEM (Britain)
knownConversions.put(0x1a, "cp850"); // English OEM (Britain)*
knownConversions.put(0x1b, "cp437"); // English OEM (U.S.)
knownConversions.put(0x1c, "cp863"); // French OEM (Canada)
knownConversions.put(0x1d, "cp850"); // French OEM*
knownConversions.put(0x1f, "cp852"); // Czech OEM
knownConversions.put(0x22, "cp852"); // Hungarian OEM
knownConversions.put(0x23, "cp852"); // Polish OEM
knownConversions.put(0x24, "cp860"); // Portuguese OEM
knownConversions.put(0x25, "cp850"); // Portuguese OEM*
knownConversions.put(0x26, "cp866"); // Russian OEM
knownConversions.put(0x37, "cp850"); // English OEM (U.S.)*
knownConversions.put(0x40, "cp852"); // Romanian OEM
knownConversions.put(0x4d, "cp936"); // Chinese GBK (PRC)
knownConversions.put(0x4e, "cp949"); // Korean (ANSI/OEM)
knownConversions.put(0x4f, "cp950"); // Chinese Big5 (Taiwan)
knownConversions.put(0x50, "cp874"); // Thai (ANSI/OEM)
knownConversions.put(0x57, "cp1252"); // ANSI
knownConversions.put(0x58, "cp1252"); // Western European ANSI
knownConversions.put(0x59, "cp1252"); // Spanish ANSI
knownConversions.put(0x64, "cp852"); // Eastern European MS–DOS
knownConversions.put(0x65, "cp866"); // Russian MS–DOS
knownConversions.put(0x66, "cp865"); // Nordic MS–DOS
knownConversions.put(0x67, "cp861"); // Icelandic MS–DOS
knownConversions.put(0x6a, "cp737"); // Greek MS–DOS (437G)
knownConversions.put(0x6b, "cp857"); // Turkish MS–DOS
knownConversions.put(0x6c, "cp863"); // French–Canadian MS–DOS
knownConversions.put(0x78, "cp950"); // Taiwan Big 5
knownConversions.put(0x79, "cp949"); // Hangul (Wansung)
knownConversions.put(0x7a, "cp936"); // PRC GBK
knownConversions.put(0x7b, "cp932"); // Japanese Shift-JIS
knownConversions.put(0x7c, "cp874"); // Thai Windows/MS–DOS
knownConversions.put(0x86, "cp737"); // Greek OEM
knownConversions.put(0x87, "cp852"); // Slovenian OEM
knownConversions.put(0x88, "cp857"); // Turkish OEM
knownConversions.put(0xc8, "cp1250"); // Eastern European Windows
knownConversions.put(0xc9, "cp1251"); // Russian Windows
knownConversions.put(0xca, "cp1254"); // Turkish Windows
knownConversions.put(0xcb, "cp1253"); // Greek Windows
knownConversions.put(0xcc, "cp1257"); // Baltic Windows
return (knownConversions.get(Byte.toUnsignedInt(pageCodeBinaryValue)));
}