Index: modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/UTF_8.java =================================================================== --- modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/UTF_8.java (revision 991918) +++ modules/nio_char/src/main/java/org/apache/harmony/niochar/charset/UTF_8.java (working copy) @@ -157,8 +157,15 @@ } inIndex += tail; } - cArr[outIndex++] = (char) jchar; - outRemaining--; + if (jchar <= 0xffff) { + cArr[outIndex++] = (char) jchar; + outRemaining--; + } else { + if (outRemaining < 2) return CoderResult.OVERFLOW; + cArr[outIndex++] = (char) ((jchar >> 0xA) + 0xD7C0); + cArr[outIndex++] = (char) ((jchar & 0x3FF) + 0xDC00); + outRemaining -= 2; + } } in.position(inIndex - in.arrayOffset()); out.position(outIndex - out.arrayOffset());