Java:将UTF8 String转换为另一种编码的字节数组

时间:2010-10-26 09:19:23

标签: java encoding cp1251

我有UTF8编码的字符串,但我需要在cp1251中将参数发布到运行时进程。如何解码字符串或字节数组?

我需要像:bytesInCp1251 = encodeTo(stringInUtf8, "cp1251");


感谢大家!这是我自己的解决方案:

OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);

4 个答案:

答案 0 :(得分:9)

Java中没有“UTF8编码字符串”这样的东西。 Java字符串在内部使用UTF-16,但应该被视为没有特定编码的抽象。如果你有一个字符串,它已经被解码了。如果要对其进行编码,请使用string.getBytes(encoding)。如果您的原始数据是UTF-8,则在将该数据从字节转换为String时必须考虑到这一点。

答案 1 :(得分:5)

byte[] bytesInCp1251 = stringInUtf8.getBytes("cp1251");

答案 2 :(得分:1)

这是解决方案!

OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);

答案 3 :(得分:0)

为什么不做这样的事情(假设stringInUtf8是UTF-8字符串)?

String cp1251Str = new String(stringInUtf8.getBytes("UTF-8"), "cp1251");