diff -rupN mkgmap-r1995-orig\src/uk/me/parabola/imgfmt/app/labelenc/CodeFunctions.java mkgmap-r1995\src/uk/me/parabola/imgfmt/app/labelenc/CodeFunctions.java --- mkgmap-r1995-orig\src/uk/me/parabola/imgfmt/app/labelenc/CodeFunctions.java 2011-06-23 08:37:10.000000000 -0600 +++ mkgmap-r1995\src/uk/me/parabola/imgfmt/app/labelenc/CodeFunctions.java 2011-10-09 12:36:47.685732300 -0600 @@ -98,6 +98,14 @@ public class CodeFunctions { } else if ("simple8".equals(charset)) { funcs.setEncodingType(ENCODING_FORMAT9); funcs.setEncoder(new Simple8Encoder()); + } else if ("cp932".equals(charset) || "ms932".equals(charset)) { + funcs.setEncodingType(ENCODING_FORMAT10); + funcs.setEncoder(new AnyCharsetEncoder("ms932")); + funcs.setDecoder(new AnyCharsetDecoder("ms932")); + Transliterator transliterator = new NullTransliterator(); + funcs.setTransliterator(transliterator); + funcs.setCodepage(932); + } else { funcs.setEncodingType(ENCODING_FORMAT9); funcs.setDecoder(new AnyCharsetDecoder(charset)); @@ -152,6 +160,10 @@ public class CodeFunctions { funcs.setEncodingType(ENCODING_FORMAT6); funcs.setEncoder(new Format6Encoder()); funcs.setDecoder(new Format6Decoder()); + } else if (codePage == 932) { + funcs.setEncodingType(ENCODING_FORMAT10); + funcs.setEncoder(new AnyCharsetEncoder("ms932")); + funcs.setDecoder(new AnyCharsetDecoder("ms932")); } else if (format == ENCODING_FORMAT9) { funcs.setEncodingType(ENCODING_FORMAT9); String cpName = "cp" + codePage; diff -rupN mkgmap-r1995-orig\src/uk/me/parabola/imgfmt/app/srt/Sort.java mkgmap-r1995\src/uk/me/parabola/imgfmt/app/srt/Sort.java --- mkgmap-r1995-orig\src/uk/me/parabola/imgfmt/app/srt/Sort.java 2011-06-23 08:34:55.000000000 -0600 +++ mkgmap-r1995\src/uk/me/parabola/imgfmt/app/srt/Sort.java 2011-10-09 12:34:11.510799600 -0600 @@ -194,6 +194,10 @@ public class Sort { this.codepage = codepage; if (codepage == 0) charset = Charset.forName("cp1252"); + else if (codepage == 932) + // Java uses "ms932" for code page 932 + // (Windows-31J, Shift-JIS + MS extensions) + charset = Charset.forName("ms932"); else charset = Charset.forName("cp" + codepage); encoder = charset.newEncoder();