UTF-8编码与Base-64编码

时间:2011-07-22 15:07:26

标签: java

我想编码一个文件,它可能是图像或任何pdf并将其发送到服务器。我必须遵循哪种类型的编码和解码。 (服务器和客户端都在我们公司。我们可以在两个地方编写逻辑)。 java中默认支持 UTF-8编码。并使用 Base-64 编码我必须导入外部jar。对于简单的文本,两种方式都很好。我正在使用tcp套接字编程。

使用UTF-8编码

String str = "This is my Sample application";
        String urlEncodedData = URLEncoder.encode(str, "UTF-8"); // Encoding with UTF-8
        System.out.println("..after URL Encodingencoding..."+urlEncodedData );
        String retrievedData = URLDecoder.decode(urlEncodedData , "UTF-8");// Decoding with UTF-8
        System.out.println("..after decoding..."+retrievedData ); 

使用Base-64(使用commons.codec jar of apache

byte[] b =Base64.encodeBase64(str.getBytes()); //Encoding  base 64
        Base64.decodeBase64(b); // Decoding with Base 64

1 个答案:

答案 0 :(得分:34)

UTF-8是一种文本编码 - 一种将文本编码为二进制数据的方法。

Base64在某种程度上是相反的 - 它是将任意二进制数据编码为ASCII文本的一种方式。

如果你需要将任意二进制数据编码为文本,那么Base64就是你的方法 - 你不能尝试将任意二进制数据视为UTF- 8个编码的文本数据。

但是,您可能首先将文件作为二进制数据传输到服务器 - 这取决于您正在使用的传输方式。