--- old/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2012-06-26 15:15:25.369986400 -0700 +++ new/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java 2012-06-26 15:15:24.398252500 -0700 @@ -2609,6 +2609,18 @@ if (str == null) { return str; } + int len = str.length(), i=0, ch; + for (; i < len; i++) { + ch = str.charAt(i); + // if it's not an ASCII 7 character, break here, and use UTF-8 encoding + if (ch >= 128) + break; + } + + // we saw no non-ascii-7 character + if (i == len) { + return str; + } // get UTF-8 bytes for the string StringBuffer buffer = new StringBuffer(); @@ -2620,11 +2632,11 @@ // should never happen return str; } - int len = bytes.length; - int ch; + + len = bytes.length; // for each byte - for (int i = 0; i < len; i++) { + for (i = 0; i < len; i++) { b = bytes[i]; // for non-ascii character: make it positive, then escape if (b < 0) {