diff -r bafa63ac44a2 -r 7c10f6d5635c rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed May 07 10:01:54 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed May 07 11:41:41 2014 +0200 @@ -19,6 +19,7 @@ import java.io.IOException; import java.io.InputStream; +import java.util.Locale; import static org.apidesign.vm4brwsr.ByteCodeParser.*; /** Translator of the code inside class files to JavaScript. @@ -1533,7 +1534,18 @@ case '_': sb.append("_1"); break; case ';': sb.append("_2"); break; case '[': sb.append("_3"); break; - default: sb.append(ch); break; + default: + if (Character.isJavaIdentifierPart(ch)) { + sb.append(ch); + } else { + sb.append("_0"); + String hex = Integer.toHexString(ch).toLowerCase(Locale.ENGLISH); + for (int m = hex.length(); m < 4; m++) { + sb.append("0"); + } + sb.append(hex); + } + break; } } return sb.toString();