我有UTF8编码的字符串,但我需要在cp1251中将参数发布到运行时进程。如何解码字符串或字节数组?
我需要像:bytesInCp1251 = encodeTo(stringInUtf8, "cp1251");
感谢大家!这是我自己的解决方案:
OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);
答案 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");