[java] 將字符串編碼為UTF-8



4 Answers

如何使用

ByteBuffer byteBuffer = Charset.forName("UTF-8").encode(myString)
Question

我有一個帶有“ñ”字符的字符串,我遇到了一些問題。 我需要將此String編碼為UTF-8編碼。 我通過這種方式嘗試過,但它不起作用:

byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");

如何將該字符串編碼為utf-8?




我使用下面的代碼通過指定編碼格式對特殊字符進行編碼。

String text = "This is an example é";
byte[] byteText = text.getBytes(Charset.forName("UTF-8"));
//To get original string from byte.
String originalString= new String(byteText , "UTF-8");



在那一刻我經歷了這個問題,並設法通過以下方式解決它

首先我需要導入

import java.nio.charset.Charset;

然後我不得不聲明一個常量來使用UTF-8ISO-8859-1

private static final Charset UTF_8 = Charset.forName("UTF-8");
private static final Charset ISO = Charset.forName("ISO-8859-1");

然後我可以用以下方式使用它:

String textwithaccent="Thís ís a text with accent";
String textwithletter="Ñandú";

text1 = new String(textwithaccent.getBytes(ISO), UTF_8);
text2 = new String(textwithletter.getBytes(ISO),UTF_8);



你可以試試這種方式。

byte ptext[] = myString.getBytes("ISO-8859-1"); 
String value = new String(ptext, "UTF-8"); 



在Java7中,您可以使用:

import static java.nio.charset.StandardCharsets.*;

byte[] ptext = myString.getBytes(ISO_8859_1); 
String value = new String(ptext, UTF_8); 

getBytes(String) ,它沒有聲明throws UnsupportedEncodingException

如果您使用的是較舊的Java版本,則可以自行聲明字符集常數:

import java.nio.charset.Charset;

public class StandardCharsets {
    public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
    public static final Charset UTF_8 = Charset.forName("UTF-8");
    //....
}





Related



Tags

java java   utf-8