Here you can find the source of writeStringToUtf8(final String str, final OutputStream out)
final static void writeStringToUtf8(final String str, final OutputStream out) throws IOException
//package com.java2s; /*/*from w ww. j a v a 2 s. co m*/ * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.io.IOException; import java.io.OutputStream; public class Main { final static void writeStringToUtf8(final String str, final OutputStream out) throws IOException { final int length = str.length(); int i = 0; char c; while (i < length) { c = str.charAt(i++); if (c < 0x80) { out.write(c); continue; } if ((c >= 0xD800 && c <= 0xDBFF) || (c >= 0xDC00 && c <= 0xDFFF)) { //No Surrogates in sun java out.write(0x3f); continue; } char ch; int bias; int write; if (c > 0x07FF) { ch = (char) (c >>> 12); write = 0xE0; if (ch > 0) { write |= (ch & 0x0F); } out.write(write); write = 0x80; bias = 0x3F; } else { write = 0xC0; bias = 0x1F; } ch = (char) (c >>> 6); if (ch > 0) { write |= (ch & bias); } out.write(write); out.write(0x80 | ((c) & 0x3F)); } } }