GWT中的ByteBuffer转换为String

3

在一个PlayN项目中,我有以下Java代码:

import com.google.common.base.Charsets;
import java.nio.ByteBuffer;

ByteBuffer msg = ... // a ByteBuffer that contains a String
String s = Charsets.UTF_8.decode(msg).toString();

这在Java中可以正常工作,但是当我尝试用GWT编译它时,我会得到以下错误:

The method decode(ByteBuffer) is undefined for the type Charset

在GWT中,获取ByteBuffer内部以UTF-8编码的String的正确方式是什么?


1
ByteBuffer 不被支持,那么为什么它没有更早地失败?您是否使用某些第三方库在客户端模拟 ByteBuffer - Thomas Broyer
哎呀,是的,我忘了提到:我正在使用PlayN,它模拟了java.nio(主要是缓冲区),请参见https://github.com/threerings/playn/tree/master/html/super/playn/super/java - AndresQ
1个回答

5

在使用ByteBuffer#get(byte[])获取byte[]数组后,您应该能够使用new String(bytes, "UTF-8")来将其转换为String类型。
这个String构造函数和getBytes(String)方法针对UTF-8和ISO-8859-1进行了实现。


我一直在寻找一个非常复杂的解决方案,但事实上它是那么简单... 谢谢! - AndresQ
如果您查看gwt超级源代码,您会发现String默认为UTF-8;但是,如果这是在共享代码中,则Thomas的答案是跨平台的正确解决方案。小贴士:Gwt还支持使用“ISO-LATIN-1”的拉丁文 :) - Ajax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接