Here you can find the source of stringToUtf8Bytes(String string)
Parameter | Description |
---|---|
string | non-null; the string to convert |
public static byte[] stringToUtf8Bytes(String string)
//package com.java2s; /*//from w ww. ja va 2s . co m * Copyright (C) 2007 The Android Open Source Project * * Licensed 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. */ public class Main { /** * Converts a string into its Java-style UTF-8 form. Java-style UTF-8 * differs from normal UTF-8 in the handling of character '\0' and * surrogate pairs. * * @param string non-null; the string to convert * @return non-null; the UTF-8 bytes for it */ public static byte[] stringToUtf8Bytes(String string) { int len = string.length(); byte[] bytes = new byte[len * 3]; // Avoid having to reallocate. int outAt = 0; for (int i = 0; i < len; i++) { char c = string.charAt(i); if ((c != 0) && (c < 0x80)) { bytes[outAt] = (byte) c; outAt++; } else if (c < 0x800) { bytes[outAt] = (byte) (((c >> 6) & 0x1f) | 0xc0); bytes[outAt + 1] = (byte) ((c & 0x3f) | 0x80); outAt += 2; } else { bytes[outAt] = (byte) (((c >> 12) & 0x0f) | 0xe0); bytes[outAt + 1] = (byte) (((c >> 6) & 0x3f) | 0x80); bytes[outAt + 2] = (byte) ((c & 0x3f) | 0x80); outAt += 3; } } byte[] result = new byte[outAt]; System.arraycopy(bytes, 0, result, 0, outAt); return result; } }