--- FM2SQL/Attic/Convert.java 2004/06/01 10:29:48 1.55
+++ FM2SQL/Attic/Convert.java 2004/06/22 10:33:53 1.59
@@ -12,8 +12,6 @@
* rogo
*/
-import java.util.*;
-import java.sql.*;
import java.awt.Cursor;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -25,6 +23,16 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.TreeSet;
+import java.util.Vector;
import com.exploringxml.xml.Node;
import com.exploringxml.xml.Xparse;
@@ -1210,6 +1218,8 @@ class Convert
Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });
Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });
Node delimiterNode = root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 });
+ Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[] { 1, 1, i, 1, 1 });
+
if (node3 == null)
throw new Error("parse error database tag missing");
if (node == null)
@@ -1220,6 +1230,12 @@ class Convert
throw new Error("parse error password tag missing");
if (delimiterNode != null)
delimiter = delimiterNode.getCharacters();
+ if(useNormanToUnicodeMapper!=null)
+ {
+ database.setUseNormanToUnicodeMapper(Boolean.valueOf(useNormanToUnicodeMapper.getCharacters()).booleanValue());
+ System.out.println("useMapper "+Boolean.valueOf(useNormanToUnicodeMapper.getCharacters().trim()).booleanValue());
+ }
+
String url = node.getCharacters();
String user = node1.getCharacters();
String password = node2.getCharacters();
@@ -1383,9 +1399,16 @@ class Convert
Node node3 = root.find("convert/source/database", new int[] { 1, 1, i });
Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 });
Node delimiterNode = root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 });
+ Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[] { 1, 1, i, 1, 1 });
if (delimiterNode != null)
delimiter = delimiterNode.getCharacters();
+ if(useNormanToUnicodeMapper!=null)
+ {
+ database.setUseNormanToUnicodeMapper(Boolean.valueOf(useNormanToUnicodeMapper.getCharacters()).booleanValue());
+ System.out.println("useMapper "+Boolean.valueOf(useNormanToUnicodeMapper.getCharacters().trim()).booleanValue());
+ }
+
if (node3 == null)
throw new Error("parse error database tag missing");
if (node == null)
@@ -1574,6 +1597,8 @@ class Convert
Vector tables;
Vector ids;
String delimiter = "//";
+ boolean useNormanToUnicodeMapper = false;
+
final static int CONVERT_MODE = 1;
final static int APPEND_MODE = 2;
final static int UPDATE_MODE = 3;
@@ -1616,6 +1641,8 @@ class Convert
modeString = "delete";
buffr.write(" " + modeString + "\n");
+ buffr.write(" " + useNormanToUnicodeMapper + "\n");
+
int index = 0;
while (index < tables.size())
{
@@ -1875,5 +1902,516 @@ class Convert
dialog.setVisible(false);
}
} // to method
+
+ /**
+ * Converts input String in norman encoding to unicode
+ * @param inp
+ * @return converted String
+ */
+ static public String normanToUnicode(String inp) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < inp.length(); i++) {
+ char c = inp.charAt(i);
+ // System.out.println("char "+c+" "+(int)c);
+ switch (c) {
+ case 1: buf.append("\u00d0"); break; // Eth
+ case 2: buf.append("\u00f0"); break; // eth
+ case 3: buf.append("\u0141"); break; // Lslash
+ case 4: buf.append("\u0142"); break; // lslash
+ case 5: buf.append("\u0160"); break; // S caron
+ case 6: buf.append("\u0161"); break; // s caron
+ case 7: buf.append("\u00dd"); break; // Y acute
+ case 8: buf.append("\u00fd"); break; // y acute
+ case 11: buf.append("\u00de"); break; // Thorn
+ case 12: buf.append("\u00fe"); break; // thorn
+ case 14: buf.append("\u017d"); break; // Z caron
+ case 15: buf.append("\u017e"); break; // z caron
+ case 17: buf.append("\u0073"); break; // asciitilde
+ case 18: buf.append("j\u0305"); break; // j macron [does a single char exist?]
+ case 19: buf.append("^"); break; // circumflex
+ case 20: buf.append("\u0303"); break; // tilde
+ case 21: buf.append("\u00bd"); break; // onehalf
+ case 22: buf.append("\u00bc"); break; // onequarter
+ case 23: buf.append("\u00b9"); break; // onesuperior
+ case 24: buf.append("\u00be"); break; // threequarters
+ case 25: buf.append("\u00b3"); break; // threesuperior
+ case 26: buf.append("\u00b2"); break; // twosuperior
+ case 27: buf.append("\u00a6"); break; // brokenbar
+ case 28: buf.append("-"); break; // minus
+ case 29: buf.append("\u00d7"); break; // multiply
+ case 39: buf.append("'"); break; // quotesingle
+ case 94: buf.append("\u0302"); break; // circumflex
+ case 96: buf.append("\u0300"); break; // grave
+ case 196: buf.append("\u00c4"); break; // A dieresis
+ case 197: buf.append("\u00c5"); break; // A ring
+ case 201: buf.append("\u00c9"); break; // E acute
+ case 209: buf.append("\u00d1"); break; // N tilde
+ case 214: buf.append("\u00d6"); break; // O dieresis
+ case 220: buf.append("\u00dc"); break; // U dieresis
+ case 225: buf.append("\u00e1"); break; // a acute
+ case 224: buf.append("\u00e0"); break; // a grave
+ case 226: buf.append("\u00e2"); break; // a circumflex
+ case 228: buf.append("\u00e4"); break; // a dieresis
+ case 227: buf.append("\u00e3"); break; // a tilde
+ case 229: buf.append("\u0101"); break; // a macron
+ case 231: buf.append("\u00e7"); break; // c cedilla
+ case 233: buf.append("\u00e9"); break; // e acute
+ case 232: buf.append("\u00e8"); break; // e grave
+ case 234: buf.append("\u00ea"); break; // e circumflex
+ case 235: buf.append("\u00eb"); break; // e dieresis
+ case 237: buf.append("\u00ed"); break; // i acute
+ case 236: buf.append("\u00ec"); break; // i grave
+ case 238: buf.append("\u00ee"); break; // i circumflex
+ case 239: buf.append("\u00ef"); break; // i dieresis
+ case 241: buf.append("\u00f1"); break; // n tilde
+ case 243: buf.append("\u00f3"); break; // o acute
+ case 242: buf.append("\u00f2"); break; // o grave
+ case 244: buf.append("\u00f4"); break; // o circumflex
+ case 246: buf.append("\u00f6"); break; // o dieresis
+ case 245: buf.append("\u00f5"); break; // o tilde
+ case 250: buf.append("\u00fa"); break; // u acute
+ case 249: buf.append("\u00f9"); break; // u grave
+ case 251: buf.append("\u00fb"); break; // u circumflex
+ case 252: buf.append("\u00fc"); break; // u dieresis
+ case 8224: buf.append("\u1e6d"); break; // t underdot
+ case 176: buf.append("\u00b0"); break; // degree
+ case 162: buf.append("\u1ebd"); break; // e tilde
+ case 163: buf.append("\u00a3"); break; // sterling
+ case 167: buf.append("\u00a7"); break; // section
+ case 182: buf.append("\u00b6"); break; // paragraph
+ case 223: buf.append("\u015b"); break; // s acute
+ case 174: buf.append("\u1e5b"); break; // r underdot
+ case 169: buf.append("\u1e45"); break; // n overdot
+ case 353: buf.append("\u1e45"); break; // n overdot
+ case 180: buf.append("\u0301"); break; // acute
+ case 168: buf.append("\u0308"); break; // dieresis
+ case 8800: buf.append("\u1e6d"); break; // t underdot
+ case 198: buf.append("\u00c6"); break; // AE
+ case 216: buf.append("\u014d"); break; // o macron
+ case 8734: buf.append("\u0129"); break; // i tilde
+ case 177: buf.append("\u00b1"); break; // plusminus
+ case 165: buf.append("\u012b"); break; // i macron
+ case 181: buf.append("\u1e43"); break; // m underdot
+ case 8706: buf.append("\u1e0d"); break; // d underdot
+ case 240: buf.append("\u1e0d"); break; // d underdot
+
+ case 8721: buf.append("\u1e63"); break; // s underdot
+ case 960: buf.append("\u017a"); break; // z acute
+ case 8747: buf.append("\u1e45"); break; // n overdot
+ case 937: buf.append("\u0169"); break; // u tilde
+ case 230: buf.append("\u00e6"); break; // ae
+ case 248: buf.append("\u00f8"); break; // oslash
+ case 191: buf.append("\u0304\u0306"); break; // macron breve
+ case 172: buf.append("\u1e37"); break; //
+ case 8730: buf.append("j\u0305"); break; // j macron [does a single char exist?]
+ case 402: buf.append("\u0103"); break; // a breve
+ case 8776: buf.append("\u016d"); break; // u breve
+ case 187: buf.append("\u1e42"); break; // M underdot
+ case 8230: buf.append("\u2026"); break; // ellipsis
+ case 192: buf.append("\u00c0"); break; // A grave
+ case 195: buf.append("\u00c3"); break; // A tilde
+ case 213: buf.append("\u00d5"); break; // O tilde
+ case 338: buf.append("m\u0306"); break; // m breve
+ case 339: buf.append("\u0153"); break; // oe
+ case 8211: buf.append("\u2013"); break; // endash
+ case 8212: buf.append("\u2014"); break; // emdash
+ case 8220: buf.append("\u201c"); break; // quotedblleft
+ case 8221: buf.append("\u201d"); break; // quotedblright
+ case 8216: buf.append("\u2018"); break; // quoteleft
+ case 8217: buf.append("\u2019"); break; // quoteright
+ case 247: buf.append("\u1e37"); break; // l underring [actually underdot]
+ case 9674: buf.append("\u1e41"); break; // m overdot
+ case 255: buf.append("n\u0306"); break; // n breve
+ case 376: buf.append("\u00d7"); break; // multiply
+ case 8364: buf.append("\u1e5b"); break; // r underring [actually underdot]
+ case 8249: buf.append("\u1e44"); break; // N overdot
+ case 8250: buf.append("\u1e62"); break; // S underdot
+ case 64257: buf.append("\u1e24"); break; // H underdot
+ case 64258: buf.append("\u1e0c"); break; // D underdot
+ case 8225: buf.append("\u2021"); break; // daggerdbl
+ case 8218: buf.append("\u1e36"); break; // L underdot
+ case 8222: buf.append("\u0113"); break; // e macron
+ case 194: buf.append("\u1e5f"); break; // r underbar
+ case 202: buf.append("r\u0324"); break; // r underdieresis
+ case 193: buf.append("\u012a"); break; // I macron
+ case 8486:
+ case 203: buf.append("\u016b"); break; // u macron
+ case 200: buf.append("\u1e6c"); break; // T underdot
+ case 205: buf.append("\u1e64"); break; // S acute
+ case 206: buf.append("\u2020"); break; // dagger
+ case 207: buf.append("\u0115"); break; // e breve
+ case 204: buf.append("\u014f"); break; // o breve
+ case 211: buf.append("\u0100"); break; // A macron
+ case 212: buf.append("\u1e46"); break; // N underdot
+ case 210: buf.append("\u1e3b"); break; // l underbar
+ case 218: buf.append("\u016a"); break; // U macron
+ case 219: buf.append("\u0179"); break; // Z acute
+ case 217: buf.append("\u1e5a"); break; // R underdot
+ case 305: buf.append("\u0131"); break; // dotlessi
+ case 710: buf.append("\u1e47"); break; // n underdot
+ case 732: buf.append("\u1e49"); break; // n underbar
+ case 175: buf.append("\u0304"); break; // macron
+ case 728: buf.append("\u0306"); break; // breve
+ case 729:case 215: buf.append("\u1e25"); break; // h underdot
+ case 730: buf.append("\u012d"); break; // i breve
+ case 184: buf.append("\u0327"); break; // cedilla
+ case 733: buf.append("\u030b"); break; // hungarumlaut
+ case 731: buf.append("\u0328"); break; // ogonek
+ case 711: buf.append("\u030c"); break; // caron
+ case 199: buf.append("\u012b\u0303"); break; // imacron tilde
+ case 8226: buf.append("\u1e5d"); break; // runderdot macron
+ case 8482: buf.append("\u016b\0306"); break; // umacron breve
+ case 8804: buf.append("\u0101\u0301"); break; // amacron acute
+ case 8805: buf.append("\u016b\u0301"); break; // umacron acute
+ case 8719: buf.append("\u0113\u0301"); break; // emacron acute
+ case 170: buf.append("\u0113\u0300"); break; // emacron breve
+ case 186: buf.append("\u014d\u0300"); break; // omacron breve
+ case 161: buf.append("\u0101\u0306"); break; // amacron breve
+ case 8710: buf.append("\u0101\u0303"); break; // amacron tilde
+ case 171: buf.append("\u012b\u0301"); break; // imacron acute
+ case 8260: buf.append("\u1e00"); break; // runderdotmacron acute
+ case 183: buf.append("\u1e5b\u0301"); break; // runderdot acute
+ case 8240: buf.append("\u012b\u0306"); break; // imacron breve
+ case 63743: buf.append("\u016b\u0303"); break; // umacron tilde
+ default: buf.append(c);
+ if((int)c>127)
+ System.out.println("char "+c+" "+(int)c);
+ break;
+ }
+ }
+ return buf.toString();
+ }
+
+ static public String normanToUnicodeOld(String inp) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < inp.length(); i++) {
+ char c = inp.charAt(i);
+ switch (c) {
+ case 1: buf.append("\u00d0"); break; // Eth
+ case 2: buf.append("\u00f0"); break; // eth
+ case 3: buf.append("\u0141"); break; // Lslash
+ case 4: buf.append("\u0142"); break; // lslash
+ case 5: buf.append("\u0160"); break; // S caron
+ case 6: buf.append("\u0161"); break; // s caron
+ case 7: buf.append("\u00dd"); break; // Y acute
+ case 8: buf.append("\u00fd"); break; // y acute
+ case 11: buf.append("\u00de"); break; // Thorn
+ case 12: buf.append("\u00fe"); break; // thorn
+ case 14: buf.append("\u017d"); break; // Z caron
+ case 15: buf.append("\u017e"); break; // z caron
+ case 17: buf.append("\u0073"); break; // asciitilde
+ case 18: buf.append("j\u0305"); break; // j macron [does a single char exist?]
+ case 19: buf.append("^"); break; // circumflex
+ case 20: buf.append("\u0303"); break; // tilde
+ case 21: buf.append("\u00bd"); break; // onehalf
+ case 22: buf.append("\u00bc"); break; // onequarter
+ case 23: buf.append("\u00b9"); break; // onesuperior
+ case 24: buf.append("\u00be"); break; // threequarters
+ case 25: buf.append("\u00b3"); break; // threesuperior
+ case 26: buf.append("\u00b2"); break; // twosuperior
+ case 27: buf.append("\u00a6"); break; // brokenbar
+ case 28: buf.append("-"); break; // minus
+ case 29: buf.append("\u00d7"); break; // multiply
+ case 39: buf.append("'"); break; // quotesingle
+ case 94: buf.append("\u0302"); break; // circumflex
+ case 96: buf.append("\u0300"); break; // grave
+ case 128: buf.append("\u00c4"); break; // A dieresis
+ case 129: buf.append("\u00c5"); break; // A ring
+ case 131: buf.append("\u00c9"); break; // E acute
+ case 132: buf.append("\u00d1"); break; // N tilde
+ case 133: buf.append("\u00d6"); break; // O dieresis
+ case 134: buf.append("\u00dc"); break; // U dieresis
+ case 135: buf.append("\u00e1"); break; // a acute
+ case 136: buf.append("\u00e0"); break; // a grave
+ case 137: buf.append("\u00e2"); break; // a circumflex
+ case 138: buf.append("\u00e4"); break; // a dieresis
+ case 139: buf.append("\u00e3"); break; // a tilde
+ case 140: buf.append("\u0101"); break; // a macron
+ case 141: buf.append("\u00e7"); break; // c cedilla
+ case 142: buf.append("\u00e9"); break; // e acute
+ case 143: buf.append("\u00e8"); break; // e grave
+ case 144: buf.append("\u00ea"); break; // e circumflex
+ case 145: buf.append("\u00eb"); break; // e dieresis
+ case 146: buf.append("\u00ed"); break; // i acute
+ case 147: buf.append("\u00ec"); break; // i grave
+ case 148: buf.append("\u00ee"); break; // i circumflex
+ case 149: buf.append("\u00ef"); break; // i dieresis
+ case 150: buf.append("\u00f1"); break; // n tilde
+ case 151: buf.append("\u00f3"); break; // o acute
+ case 152: buf.append("\u00f2"); break; // o grave
+ case 153: buf.append("\u00f4"); break; // o circumflex
+ case 154: buf.append("\u00f6"); break; // o dieresis
+ case 155: buf.append("\u00f5"); break; // o tilde
+ case 156: buf.append("\u00fa"); break; // u acute
+ case 157: buf.append("\u00f9"); break; // u grave
+ case 158: buf.append("\u00fb"); break; // u circumflex
+ case 159: buf.append("\u00fc"); break; // u dieresis
+ case 160: buf.append("\u1e6d"); break; // t underdot
+ case 161: buf.append("\u00b0"); break; // degree
+ case 162: buf.append("\u1ebd"); break; // e tilde
+ case 163: buf.append("\u00a3"); break; // sterling
+ case 164: buf.append("\u00a7"); break; // section
+ case 166: buf.append("\u00b6"); break; // paragraph
+ case 167: buf.append("\u015b"); break; // s acute
+ case 168: buf.append("\u1e5b"); break; // r underdot
+ case 169: buf.append("\u1e67"); break; // s caron
+ case 171: buf.append("\u0301"); break; // acute
+ case 172: buf.append("\u0308"); break; // dieresis
+ case 173: buf.append("\u1e6d"); break; // t underdot
+ case 174: buf.append("\u00c6"); break; // AE
+ case 175: buf.append("\u014d"); break; // o macron
+ case 176: buf.append("\u0129"); break; // i tilde
+ case 177: buf.append("\u00b1"); break; // plusminus
+ case 180: buf.append("\u012b"); break; // i macron
+ case 181: buf.append("\u1e43"); break; // m underdot
+ case 182: buf.append("\u1e0d"); break; // d underdot
+ case 183: buf.append("\u1e63"); break; // s underdot
+ case 185: buf.append("\u017a"); break; // z acute
+ case 186: buf.append("\u1e45"); break; // n overdot
+ case 189: buf.append("\u0169"); break; // u tilde
+ case 190: buf.append("\u00e6"); break; // ae
+ case 191: buf.append("\u00f8"); break; // oslash
+ case 192: buf.append("\u0304\u0306"); break; // macron breve
+ case 194: buf.append("\u1e37"); break; //
+ case 195: buf.append("j\u0305"); break; // j macron [does a single char exist?]
+ case 196: buf.append("\u0103"); break; // a breve
+ case 197: buf.append("\u016d"); break; // u breve
+ case 200: buf.append("\u1e42"); break; // M underdot
+ case 201: buf.append("\u2026"); break; // ellipsis
+ case 203: buf.append("\u00c0"); break; // A grave
+ case 204: buf.append("\u00c3"); break; // A tilde
+ case 205: buf.append("\u00d5"); break; // O tilde
+ case 206: buf.append("m\u0306"); break; // m breve
+ case 207: buf.append("\u0153"); break; // oe
+ case 208: buf.append("\u2013"); break; // endash
+ case 209: buf.append("\u2014"); break; // emdash
+ case 210: buf.append("\u201c"); break; // quotedblleft
+ case 211: buf.append("\u201d"); break; // quotedblright
+ case 212: buf.append("\u2018"); break; // quoteleft
+ case 213: buf.append("\u2019"); break; // quoteright
+ case 214: buf.append("\u1e37"); break; // l underring [actually underdot]
+ case 215: buf.append("\u1e41"); break; // m overdot
+ case 216: buf.append("n\u0306"); break; // n breve
+ case 217: buf.append("\u00d7"); break; // multiply
+ case 219: buf.append("\u1e5b"); break; // r underring [actually underdot]
+ case 220: buf.append("\u1e44"); break; // N overdot
+ case 221: buf.append("\u1e62"); break; // S underdot
+ case 222: buf.append("\u1e24"); break; // H underdot
+ case 223: buf.append("\u1e0c"); break; // D underdot
+ case 224: buf.append("\u2021"); break; // daggerdbl
+ case 226: buf.append("\u1e36"); break; // L underdot
+ case 227: buf.append("\u0113"); break; // e macron
+ case 229: buf.append("\u1e5f"); break; // r underbar
+ case 230: buf.append("r\u0324"); break; // r underdieresis
+ case 231: buf.append("\u012a"); break; // I macron
+ case 232: buf.append("\u016b"); break; // u macron
+ case 233: buf.append("\u01e6c"); break; // T underdot
+ case 234: buf.append("\u1e64"); break; // S acute
+ case 235: buf.append("\u2020"); break; // dagger
+ case 236: buf.append("\u0115"); break; // e breve
+ case 237: buf.append("\u014f"); break; // o breve
+ case 238: buf.append("\u0100"); break; // A macron
+ case 239: buf.append("\u1e46"); break; // N underdot
+ case 241: buf.append("\u1e3b"); break; // l underbar
+ case 242: buf.append("\u016a"); break; // U macron
+ case 243: buf.append("\u0179"); break; // Z acute
+ case 244: buf.append("\u1e5a"); break; // R underdot
+ case 245: buf.append("\u0131"); break; // dotlessi
+ case 246: buf.append("\u1e47"); break; // n underdot
+ case 247: buf.append("\u1e49"); break; // n underbar
+ case 248: buf.append("\u0304"); break; // macron
+ case 249: buf.append("\u0306"); break; // breve
+ case 250: buf.append("\u1e25"); break; // h underdot
+ case 251: buf.append("\u012d"); break; // i breve
+ case 252: buf.append("\u0327"); break; // cedilla
+ case 253: buf.append("\u030b"); break; // hungarumlaut
+ case 254: buf.append("\u0328"); break; // ogonek
+ case 255: buf.append("\u030c"); break; // caron
+ case 130: buf.append("\u012b\u0303"); break; // imacron tilde
+ case 165: buf.append("\u1e5d"); break; // runderdot macron
+ case 170: buf.append("\u016b\0306"); break; // umacron breve
+ case 178: buf.append("\u0101\u0301"); break; // amacron acute
+ case 179: buf.append("\u016b\u0301"); break; // umacron acute
+ case 184: buf.append("\u0113\u0301"); break; // emacron acute
+ case 187: buf.append("\u0113\u0300"); break; // emacron breve
+ case 188: buf.append("\u014d\u0300"); break; // omacron breve
+ case 193: buf.append("\u0101\u0306"); break; // amacron breve
+ case 198: buf.append("\u0101\u0303"); break; // amacron tilde
+ case 199: buf.append("\u012b\u0301"); break; // imacron acute
+ case 218: buf.append("\u1e00"); break; // runderdotmacron acute
+ case 225: buf.append("\u1e5b\u0301"); break; // runderdot acute
+ case 228: buf.append("\u012b\u0306"); break; // imacron breve
+ case 240: buf.append("\u016b\u0303"); break; // umacron tilde
+ default: buf.append(c); break;
+ }
+ }
+ return buf.toString();
+ }
+ static public String normanToUnicodeNew(String inp) {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < inp.length(); i++) {
+ char c = inp.charAt(i);
+ switch (c) {
+ case 1: buf.append("\u00d0"); break; // Eth
+ case 2: buf.append("\u00f0"); break; // eth
+ case 3: buf.append("\u0141"); break; // Lslash
+ case 4: buf.append("\u0142"); break; // lslash
+ case 5: buf.append("\u0160"); break; // S caron
+ case 6: buf.append("\u0161"); break; // s caron
+ case 7: buf.append("\u00dd"); break; // Y acute
+ case 8: buf.append("\u00fd"); break; // y acute
+ case 11: buf.append("\u00de"); break; // Thorn
+ case 12: buf.append("\u00fe"); break; // thorn
+ case 14: buf.append("\u017d"); break; // Z caron
+ case 15: buf.append("\u017e"); break; // z caron
+ case 17: buf.append("\u0073"); break; // asciitilde
+ case 18: buf.append("j\u0305"); break; // j macron [does a single char exist?]
+ case 19: buf.append("^"); break; // circumflex
+ case 20: buf.append("\u0303"); break; // tilde
+ case 21: buf.append("\u00bd"); break; // onehalf
+ case 22: buf.append("\u00bc"); break; // onequarter
+ case 23: buf.append("\u00b9"); break; // onesuperior
+ case 24: buf.append("\u00be"); break; // threequarters
+ case 25: buf.append("\u00b3"); break; // threesuperior
+ case 26: buf.append("\u00b2"); break; // twosuperior
+ case 27: buf.append("\u00a6"); break; // brokenbar
+ case 28: buf.append("-"); break; // minus
+ case 29: buf.append("\u00d7"); break; // multiply
+ case 39: buf.append("'"); break; // quotesingle
+ case 94: buf.append("\u0302"); break; // circumflex
+ case 96: buf.append("\u0300"); break; // grave
+ case 196: buf.append("\u00c4"); break; // A dieresis
+ case 197: buf.append("\u00c5"); break; // A ring
+ case 201: buf.append("\u00c9"); break; // E acute
+ case 209: buf.append("\u00d1"); break; // N tilde
+ case 214: buf.append("\u00d6"); break; // O dieresis
+ case 220: buf.append("\u00dc"); break; // U dieresis
+ case 225: buf.append("\u00e1"); break; // a acute
+ case 224: buf.append("\u00e0"); break; // a grave
+ case 226: buf.append("\u00e2"); break; // a circumflex
+ case 228: buf.append("\u00e4"); break; // a dieresis
+ case 227: buf.append("\u00e3"); break; // a tilde
+ case 229: buf.append("\u0101"); break; // a macron
+ case 231: buf.append("\u00e7"); break; // c cedilla
+ case 233: buf.append("\u00e9"); break; // e acute
+ case 232: buf.append("\u00e8"); break; // e grave
+ case 234: buf.append("\u00ea"); break; // e circumflex
+ case 235: buf.append("\u00eb"); break; // e dieresis
+ case 237: buf.append("\u00ed"); break; // i acute
+ case 236: buf.append("\u00ec"); break; // i grave
+ case 238: buf.append("\u00ee"); break; // i circumflex
+ case 239: buf.append("\u00ef"); break; // i dieresis
+ case 241: buf.append("\u00f1"); break; // n tilde
+ case 243: buf.append("\u00f3"); break; // o acute
+ case 242: buf.append("\u00f2"); break; // o grave
+ case 244: buf.append("\u00f4"); break; // o circumflex
+ case 246: buf.append("\u00f6"); break; // o dieresis
+ case 245: buf.append("\u00f5"); break; // o tilde
+ case 250: buf.append("\u00fa"); break; // u acute
+ case 249: buf.append("\u00f9"); break; // u grave
+ case 251: buf.append("\u00fb"); break; // u circumflex
+ case 252: buf.append("\u00fc"); break; // u dieresis
+ case 8224: buf.append("\u1e6d"); break; // t underdot
+ case 176: buf.append("\u00b0"); break; // degree
+ case 162: buf.append("\u1ebd"); break; // e tilde
+ case 163: buf.append("\u00a3"); break; // sterling
+ case 167: buf.append("\u00a7"); break; // section
+ case 182: buf.append("\u00b6"); break; // paragraph
+ case 223: buf.append("\u015b"); break; // s acute
+ case 174: buf.append("\u1e5b"); break; // r underdot
+ case 169: buf.append("\u1e45"); break; // n overdot
+ case 180: buf.append("\u0301"); break; // acute
+ case 168: buf.append("\u0308"); break; // dieresis
+ case 8800: buf.append("\u1e6d"); break; // t underdot
+ case 198: buf.append("\u00c6"); break; // AE
+ case 216: buf.append("\u014d"); break; // o macron
+ case 8734: buf.append("\u0129"); break; // i tilde
+ case 177: buf.append("\u00b1"); break; // plusminus
+ case 165: buf.append("\u012b"); break; // i macron
+ case 181: buf.append("\u1e43"); break; // m underdot
+ case 8706: buf.append("\u1e0d"); break; // d underdot
+ case 8721: buf.append("\u1e63"); break; // s underdot
+ case 960: buf.append("\u017a"); break; // z acute
+ case 8747: buf.append("\u1e45"); break; // n overdot
+ case 937: buf.append("\u0169"); break; // u tilde
+ case 230: buf.append("\u00e6"); break; // ae
+ case 248: buf.append("\u00f8"); break; // oslash
+ case 191: buf.append("\u0304\u0306"); break; // macron breve
+ case 172: buf.append("\u1e37"); break; //
+ case 8730: buf.append("j\u0305"); break; // j macron [does a single char exist?]
+ case 402: buf.append("\u0103"); break; // a breve
+ case 8776: buf.append("\u016d"); break; // u breve
+ case 187: buf.append("\u1e42"); break; // M underdot
+ case 8230: buf.append("\u2026"); break; // ellipsis
+ case 192: buf.append("\u00c0"); break; // A grave
+ case 195: buf.append("\u00c3"); break; // A tilde
+ case 213: buf.append("\u00d5"); break; // O tilde
+ case 338: buf.append("m\u0306"); break; // m breve
+ case 339: buf.append("\u0153"); break; // oe
+ case 8211: buf.append("\u2013"); break; // endash
+ case 8212: buf.append("\u2014"); break; // emdash
+ case 8220: buf.append("\u201c"); break; // quotedblleft
+ case 8221: buf.append("\u201d"); break; // quotedblright
+ case 8216: buf.append("\u2018"); break; // quoteleft
+ case 8217: buf.append("\u2019"); break; // quoteright
+ case 247: buf.append("\u1e37"); break; // l underring [actually underdot]
+ case 9674: buf.append("\u1e41"); break; // m overdot
+ case 255: buf.append("n\u0306"); break; // n breve
+ case 376: buf.append("\u00d7"); break; // multiply
+ case 8364: buf.append("\u1e5b"); break; // r underring [actually underdot]
+ case 8249: buf.append("\u1e44"); break; // N overdot
+ case 8250: buf.append("\u1e62"); break; // S underdot
+ case 64257: buf.append("\u1e24"); break; // H underdot
+ case 64258: buf.append("\u1e0c"); break; // D underdot
+ case 8225: buf.append("\u2021"); break; // daggerdbl
+ case 8218: buf.append("\u1e36"); break; // L underdot
+ case 8222: buf.append("\u0113"); break; // e macron
+ case 194: buf.append("\u1e5f"); break; // r underbar
+ case 202: buf.append("r\u0324"); break; // r underdieresis
+ case 193: buf.append("\u012a"); break; // I macron
+ case 203: buf.append("\u016b"); break; // u macron
+ case 200: buf.append("\u1e6c"); break; // T underdot
+ case 205: buf.append("\u1e64"); break; // S acute
+ case 206: buf.append("\u2020"); break; // dagger
+ case 207: buf.append("\u0115"); break; // e breve
+ case 204: buf.append("\u014f"); break; // o breve
+ case 211: buf.append("\u0100"); break; // A macron
+ case 212: buf.append("\u1e46"); break; // N underdot
+ case 210: buf.append("\u1e3b"); break; // l underbar
+ case 218: buf.append("\u016a"); break; // U macron
+ case 219: buf.append("\u0179"); break; // Z acute
+ case 217: buf.append("\u1e5a"); break; // R underdot
+ case 305: buf.append("\u0131"); break; // dotlessi
+ case 710: buf.append("\u1e47"); break; // n underdot
+ case 732: buf.append("\u1e49"); break; // n underbar
+ case 175: buf.append("\u0304"); break; // macron
+ case 728: buf.append("\u0306"); break; // breve
+ case 729: buf.append("\u1e25"); break; // h underdot
+ case 730: buf.append("\u012d"); break; // i breve
+ case 184: buf.append("\u0327"); break; // cedilla
+ case 733: buf.append("\u030b"); break; // hungarumlaut
+ case 731: buf.append("\u0328"); break; // ogonek
+ case 711: buf.append("\u030c"); break; // caron
+ case 199: buf.append("\u012b\u0303"); break; // imacron tilde
+ case 8226: buf.append("\u1e5d"); break; // runderdot macron
+ case 8482: buf.append("\u016b\0306"); break; // umacron breve
+ case 8804: buf.append("\u0101\u0301"); break; // amacron acute
+ case 8805: buf.append("\u016b\u0301"); break; // umacron acute
+ case 8719: buf.append("\u0113\u0301"); break; // emacron acute
+ case 170: buf.append("\u0113\u0300"); break; // emacron breve
+ case 186: buf.append("\u014d\u0300"); break; // omacron breve
+ case 161: buf.append("\u0101\u0306"); break; // amacron breve
+ case 8710: buf.append("\u0101\u0303"); break; // amacron tilde
+ case 171: buf.append("\u012b\u0301"); break; // imacron acute
+ case 8260: buf.append("\u1e00"); break; // runderdotmacron acute
+ case 183: buf.append("\u1e5b\u0301"); break; // runderdot acute
+ case 8240: buf.append("\u012b\u0306"); break; // imacron breve
+ case 63743: buf.append("\u016b\u0303"); break; // umacron tilde
+ default: buf.append(c); break;
+ }
+ }
+ return buf.toString();
+ }
+
}
\ No newline at end of file