Here you can find the source of toUTF8ByteArray(char[] string)
public static byte[] toUTF8ByteArray(char[] string)
//package com.java2s; //License from project: Apache License import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; public class Main { public static byte[] toUTF8ByteArray(String string) { return toUTF8ByteArray(string.toCharArray()); }/* www. j a v a 2 s . c om*/ public static byte[] toUTF8ByteArray(char[] string) { ByteArrayOutputStream bOut = new ByteArrayOutputStream(); try { toUTF8ByteArray(string, bOut); } catch (IOException e) { throw new IllegalStateException("cannot encode string to byte array!"); } return bOut.toByteArray(); } public static void toUTF8ByteArray(char[] string, OutputStream sOut) throws IOException { char[] c = string; int i = 0; while (i < c.length) { char ch = c[i]; if (ch < 0x0080) { sOut.write(ch); } else if (ch < 0x0800) { sOut.write(0xc0 | (ch >> 6)); sOut.write(0x80 | (ch & 0x3f)); } // surrogate pair else if (ch >= 0xD800 && ch <= 0xDFFF) { // in error - can only happen, if the Java String class has a // bug. if (i + 1 >= c.length) { throw new IllegalStateException("invalid UTF-16 codepoint"); } char W1 = ch; ch = c[++i]; char W2 = ch; // in error - can only happen, if the Java String class has a // bug. if (W1 > 0xDBFF) { throw new IllegalStateException("invalid UTF-16 codepoint"); } int codePoint = (((W1 & 0x03FF) << 10) | (W2 & 0x03FF)) + 0x10000; sOut.write(0xf0 | (codePoint >> 18)); sOut.write(0x80 | ((codePoint >> 12) & 0x3F)); sOut.write(0x80 | ((codePoint >> 6) & 0x3F)); sOut.write(0x80 | (codePoint & 0x3F)); } else { sOut.write(0xe0 | (ch >> 12)); sOut.write(0x80 | ((ch >> 6) & 0x3F)); sOut.write(0x80 | (ch & 0x3F)); } i++; } } public static byte[] toByteArray(char[] chars) { byte[] bytes = new byte[chars.length]; for (int i = 0; i != bytes.length; i++) { bytes[i] = (byte) chars[i]; } return bytes; } public static byte[] toByteArray(String string) { byte[] bytes = new byte[string.length()]; for (int i = 0; i != bytes.length; i++) { char ch = string.charAt(i); bytes[i] = (byte) ch; } return bytes; } }