ByteBuffer 到 GWT 中的字符串

Posted

技术标签:

【中文标题】ByteBuffer 到 GWT 中的字符串【英文标题】:ByteBuffer to String in GWT 【发布时间】:2013-01-03 15:03:13 【问题描述】:

在 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 编码)的正确方法是什么?

【问题讨论】:

ByteBuffer isn't supported 那么它为什么不早点失败呢?您是否正在使用一些在客户端模拟 ByteBuffer 的第三方库? 哎呀,是的,我忘了说:我正在使用模拟 java.nio(主要是缓冲区)的 PlayN,请参阅github.com/threerings/playn/tree/master/html/super/playn/super/… 【参考方案1】:

在使用ByteBuffer#get(byte[])ByteBuffer 中的字节作为byte[] 取出后,您应该能够使用new String(bytes, "UTF-8")。 这个String 构造函数以及getBytes(String) 是针对UTF-8 和ISO-8859-1 实现的。

【讨论】:

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

以上是关于ByteBuffer 到 GWT 中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

这个 Java ByteBuffer 的行为有解释吗?

如何重新使用 ByteBuffer 将几个 512 字节的块写入套接字?

Java ByteBuffer 到字符串

如何将 ByteBuffer 转换为 pdf

为啥我不能将字符串添加到 ByteBuffer?

ByteBuffer 到 String 和 VIce Versa 不同的结果