我有一个带有"ñ"字符的字符串,我遇到了一些问题.我需要将此String编码为UTF-8编码.我通过这种方式尝试过,但它不起作用:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
如何将该字符串编码为utf-8?
Ami*_*hum 165
如何使用
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Run Code Online (Sandbox Code Playgroud)
Joa*_*uer 131
String Java中的对象使用无法修改的UTF-16编码.
唯一可以有不同编码的是a byte[].因此,如果您需要UTF-8数据,那么您需要一个byte[].如果你有一个String包含意外数据的问题,那么问题是在一些错误地将某些二进制数据转换为a的某个较早的位置String(即它使用了错误的编码).
rzy*_*mek 75
在Java7中,您可以使用:
import static java.nio.charset.StandardCharsets.*;
byte[] ptext = myString.getBytes(ISO_8859_1);
String value = new String(ptext, UTF_8);
Run Code Online (Sandbox Code Playgroud)
这具有优势,getBytes(String)而不是它没有声明throws UnsupportedEncodingException.
如果您使用的是较旧的Java版本,则可以自己声明charset常量:
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");
//....
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*aný 72
用byte[] ptext = String.getBytes("UTF-8");而不是getBytes().getBytes()使用所谓的"默认编码",它可能不是UTF-8.
Mic*_*rdt 31
Java String在内部总是以UTF-16编码 - 但你真的应该这样想:编码是一种在字符串和字节之间进行转换的方法.
因此,如果您遇到编码问题,那么当您使用String时,修复就太晚了.您需要修复从文件,数据库或网络连接创建该String的位置.
小智 23
你可以试试这种方式.
byte ptext[] = myString.getBytes("ISO-8859-1");
String value = new String(ptext, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
Qui*_*mbo 12
过了一会儿,我经历了这个问题,并设法通过以下方式解决了这个问题
首先我需要导入
import java.nio.charset.Charset;
Run Code Online (Sandbox Code Playgroud)
然后我不得不宣布一个恒定的使用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");
Run Code Online (Sandbox Code Playgroud)
然后我可以通过以下方式使用它:
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);
Run Code Online (Sandbox Code Playgroud)
小智 9
String value = new String(myString.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
并且,如果您想从带有"ISO-8859-1"编码的文本文件中读取:
String line;
String f = "C:\\MyPath\\MyFile.txt";
try {
BufferedReader br = Files.newBufferedReader(Paths.get(f), Charset.forName("ISO-8859-1"));
while ((line = br.readLine()) != null) {
System.out.println(new String(line.getBytes("UTF-8")));
}
} catch (IOException ex) {
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
904448 次 |
| 最近记录: |