src/share/classes/sun/nio/cs/UTF_8.java

Print this page

        

@@ -680,10 +680,15 @@
                 return encodeArrayLoop(src, dst);
             else
                 return encodeBufferLoop(src, dst);
         }
 
+        private byte repl = (byte)'?';
+        protected void implReplaceWith(byte[] newReplacement) {
+            repl = newReplacement[0];
+        }
+
         // returns -1 if there is malformed char(s) and the
         // "action" for malformed input is not REPLACE.
         public int encode(char[] sa, int sp, int len, byte[] da) {
             int sl = sp + len;
             int dp = 0;

@@ -707,11 +712,11 @@
                         sgp = new Surrogate.Parser();
                     int uc = sgp.parse(c, sa, sp - 1, sl);
                     if (uc < 0) {
                         if (malformedInputAction() != CodingErrorAction.REPLACE)
                             return -1;
-                        da[dp++] = replacement()[0];
+                        da[dp++] = repl;
                     } else {
                         da[dp++] = (byte)(0xf0 | ((uc >> 18)));
                         da[dp++] = (byte)(0x80 | ((uc >> 12) & 0x3f));
                         da[dp++] = (byte)(0x80 | ((uc >>  6) & 0x3f));
                         da[dp++] = (byte)(0x80 | (uc & 0x3f));