2010-02-12 111 views
14

我需要编码一个简短的字符串作为GWT中的基础64并解码服务器上的基础64字符串。任何人都有实用课程或图书馆?如何使用GWT将短字符串编码/解码为Base64?

+1

[Java解码Base64数据]的可能重复(http://stackoverflow.com/questions/469695/decode-base64-data-in-java) – Johan 2011-09-09 18:44:27

+17

人们应该开始注意到GWT问题可能有不同的上下文来自Java SE,并不是Java SE问题的重复。在Java SE上运行的东西需要对GWT进行额外的处理。 – 2011-10-21 13:47:49

回答

12

在IE≤9以外的所有浏览器上,您都可以在客户端上使用原生JavaScript。在服务器上,您可以使用one of the official classes

的Java/GWT:

private static native String b64decode(String a) /*-{ 
    return window.atob(a); 
}-*/; 

编码为btoa

0

Base64类不能在客户端使用。它必须被仿效。

+0

哪一个不能用? – 2013-05-20 00:11:44

3

你可以看看https://github.com/mooreds/gwt-crypto

它提供base64编码到GWT。

Base64.encode(string.getBytes()); 

添加低于进口:

import com.googlecode.gwt.crypto.bouncycastle.util.encoders.Base64; 

不要忘记以下行添加到您的GWT模块XML:

<inherits name="com.googlecode.gwt.crypto.Crypto"/>  

Maven的依赖

<dependency> 
    <groupId>com.googlecode.gwt-crypto</groupId> 
    <artifactId>gwt-crypto</artifactId> 
    <version>2.3.0</version> 
</dependency> 
5

您可以使用BaseEncoding类别由Guava创建。

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/BaseEncoding.html

例如:

try { 
    String encoded = BaseEncoding.base64().encode("foo".getBytes("UTF-8")) 
} catch (UnsupportedEncodingException e) { 
    GWT.log(e.getMessage()); 
} 

而且不要忘了下面的行添加到您的GWT模块XML:

<inherits name="com.google.common.io.Io"/> 

的BaseEncoding类上都可以使用GWT客户端和服务器端。