我尝试获取byte
,然后使用Utf-8进行转换。
byte ptext[] = first_name.getBytes();
Log.i("", new String(ptext,"UTF-8"));
但是它不起作用。请为我的愚蠢而烦恼。我很困惑。
答案 0 :(得分:3)
try {
String s = new String("Æàìáûë".getBytes(StandardCharsets.ISO_8859_1), "Windows-1251");
Files.write(Paths.get("C:/cyrillic.txt"),
("\uFEFF" + s).getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
假设编辑器和编译器设置为UTF-8以具有正确的错误字符串文字。
这会将字符视为单个字节,滥用ISO-8859-1。然后为西里尔语尝试Windows-1251编码(还有其他编码)。 这样我们就有了一个java String(总是用Unicode)。 我们将使用BOM写入UTF-8的文本文件,因此Windows Notepad会将文件标识为UTF-8。
写入任何西里尔语编码都没问题。
Жамбыл
答案 1 :(得分:2)
您的字节数组必须有一些编码。如果您有负值,则编码不能是ASCII。一旦弄明白,就可以使用:
将一组字节转换为Stringbyte[] bytes = {...}
String str = new String(bytes, "UTF-8"); // for UTF-8 encoding
Log.i("value", str);
您可以使用一堆编码,查看Sun javadocs.中的Charset类。
答案 2 :(得分:2)
您的原始编码似乎是Cp1251
:
byte ptext[] = first_name.getBytes();
Log.i("", new String(ptext, "Cp1251")); // <- put it here
结果词是Жамбыл。