我有一个“ñ”字符的字符串,我有一些问题。我需要将这个字符串编码为UTF-8编码。我试过这种方法,但行不通:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
如何将该字符串编码为utf-8?
我有一个“ñ”字符的字符串,我有一些问题。我需要将这个字符串编码为UTF-8编码。我试过这种方法,但行不通:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
如何将该字符串编码为utf-8?
当前回答
怎么使用呢?
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
其他回答
Java String在内部总是用UTF-16编码——但是你真的应该这样想:编码是一种在字符串和字节之间转换的方式。
如果你有编码问题,当你有字符串的时候,就来不及修正了。您需要修复从文件、DB或网络连接中创建字符串的位置。
我很快就解决了这个问题,并设法用以下方法解决了它
首先我需要导入
import java.nio.charset.Charset;
然后我必须声明一个常量来使用UTF-8和ISO-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);
Java中的字符串对象使用不能修改的UTF-16编码*。
唯一可以有不同编码的是字节[]。因此,如果需要UTF-8数据,则需要一个字节[]。如果你有一个包含意外数据的字符串,那么问题是在之前的某个地方错误地将一些二进制数据转换为字符串(即它使用了错误的编码)。
*作为实现的问题,String可以在内部使用ISO-8859-1编码的字节[],当字符范围适合它时,但这是一个特定于实现的优化,对String的用户来说是不可见的(即你永远不会注意到,除非你深入源代码或使用反射深入String对象)。
这解决了我的问题
String inputText = "some text with escaped chars"
InputStream is = new ByteArrayInputStream(inputText.getBytes("UTF-8"));
怎么使用呢?
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)