代码之家  ›  专栏  ›  技术社区  ›  Pavel Vyazankin

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

  •  5
  • Pavel Vyazankin  · 技术社区  · 15 年前

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

    bytesInCp1251 = encodeTo(stringInUtf8, "cp1251");


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

    OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
    writer.write(s);
    
    4 回复  |  直到 15 年前
        1
  •  9
  •   Michael Borgwardt    15 年前

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

        2
  •  5
  •   William    15 年前
    byte[] bytesInCp1251 = stringInUtf8.getBytes("cp1251");
    
        3
  •  1
  •   Shervin Asgari    15 年前

    这就是解决办法!

    OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
    writer.write(s);
    
        4
  •  0
  •   Buhake Sindi Tesnep    15 年前

    stringInUtf8 是UTF-8字符串吗?

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