来源:http://blog.163.com/tfn2008@yeah/blog/static/1103213192012228103227364/
最近在做java与 delphi之间的数据通信中,发现一个问题,用base64对数据流进行编码,在delphi编码-》java解码时,一切正常,但是在用java编码 -》delphi解码时,就会出错。经过仔细的比较,发现同一段数据流用java与delphi编码后的数据是不一样的,java对这两种编码数据都能正 常的解码,而delphi只能解自己编码的数据,进一步分析,发现java编码后的数据,自动的在编码中加入了一些回车换行符(\n\r),导致 delphi解码时报错。将java编码中的回车换行符去掉后,解码正常了
JDK1.4中的sun.misc.BASE64Encoder1在编码的字节较长时,encode出来的字符窜会在中间插入\n\r, 用Weblogic带的BASE64Encoder没有加回车换行
完整的base64定义可见RFC-1421和RFC-2045。编码后的数据比原始数据略长,为原来的4/3。在电子邮件中,根据RFC822规定,每76个字符,还需要加上一个回车换行
解决方法:改用org.apache.commons.codec.binary.Base64
来源:http://blog.csdn.net/love_baobao/article/details/7023297
.Apache的实现:(建议使用这种方式,当然,自己实现也可以)
参考org.apache.commons.codec.binary.Base64
下载地址:http://commons.apache.org/codec/download_codec.cgi
Apache还提供了,非标准的实现方式:
1.不再添加回车符。
2.Url Base64,也就是将“+”和“\”换成了“-”和“_”符号,且不适用补位。
实现
来源:http://blog.csdn.net/zhaoweitco/article/details/6187443
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.*;
public class Base64Test {
public static void main(String args[]) {
Base64 base64 = new Base64();
String str = "中文";
byte[] enbytes = null;
String encodeStr = null;
byte[] debytes = null;
String decodeStr = null;
try {
enbytes = base64.encode(str.getBytes());
encodeStr = new String(enbytes);
debytes = base64.decode(enbytes);
decodeStr = new String(debytes);
} catch (EncoderException ex) {
System.out.println("编码错误");
} catch (DecoderException ex) {
System.out.println("解码错误");
}
System.out.println("编码前:"+str);
System.out.println("编码后:"+encodeStr);
System.out.println("解码后:"+decodeStr);
}
}
cmd>java com.softleader.sample.codec.Base64Test
执行结果
编码前:中文
编码后:pKSk5Q==
解码后:中文
分享到:
相关推荐
在Java和JavaScript中,Base64编码和解码是两个重要的功能,用于处理这种编码格式。下面将详细阐述这两个编程语言中实现Base64编码和解码的方法。 首先,让我们关注Java。在Java 8及更高版本中,已经内置了`java....
在Delphi编程环境中,处理Base64编码和解码是常见的需求,这涉及到字符串与二进制数据之间的转换。 本主题聚焦于在Delphi中实现Base64的编码和解码功能。首先,我们需要理解Base64的基本原理。Base64使用64个字符...
Delphi进行Base64编码后,如果使用javascript解码,会出现如下问题: 1. 汉字乱码 2. 空格变成 + 号 本资源演示Delphi代码,实现javascript能正确进行Base64解码,不出现上述2个问题。 解决思路:进行Base64前先...
在Java中,处理Base64编码和解码的操作通常涉及到网络通信、数据序列化以及安全加密等方面。下面我们将详细探讨Java中的Base64编码和解码原理及其实现方式。 Base64编码的基本思想是将每3个字节(24位)的数据转换...
总结,BASE64编码是二进制数据与ASCII字符之间的一种转换方式,在Delphi中可以使用Indy库轻松实现。无论是在加密解密过程中还是在其他需要转换二进制数据为文本形式的应用中,BASE64编码都是一个实用的工具。
实现BASE64编码和解码程序, 在类中实现如下函数并运行测试正确。 BASE64编码算法请在网上查询。 public String encode(byte[] data) { } public byte[] decode(String b) { }
本主题聚焦于在Delphi编程环境中如何使用Base64进行编码和解码,以及在与其他语言对接时可能遇到的问题和解决策略。 首先,让我们详细了解Delphi中原生的Base64实现。Delphi提供了`System.NetEncoding`单元,其中...
在本文中,我们介绍了如何使用Java将图片转换为Base64编码,并将Base64编码字符串解码成图片。使用Base64编码可以将图片数据转换为文本数据,使得数据传输和存储更加安全和可靠。同时,我们也学习了如何使用Apache ...
Base64 编码解码 Java ,Java对字符串Base64 编码解码的方法!!
在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...
程序能将多种图片格式,转换为base64编码。 可用于网页编辑等html5效果实现。 如果你在运行时感觉速度很慢,在delphi编辑环境中把 memo的scrollbars属性设置为 both 即可!
本文将深入探讨如何在JavaScript(JS)客户端和Java(Android)端实现3DES加密解密以及Base64编码解码,这对于保护用户敏感信息和实现安全通信至关重要。 首先,3DES(Triple Data Encryption Standard)是一种加强...
在Java中,实现Base64编码和解码通常使用`java.util.Base64`类或Apache Commons Codec库中的`Base64`类。标准的Base64编码过程是将每3个字节的数据转换为4个6位的二进制数,然后将这些二进制数映射到编码表中的字符...
本资源提供的是一套完整的JavaScript实现,能够与ASP.NET和JAVA平台的3DES加密解密及Base64编码解码功能保持兼容。 首先,3DES的工作原理是在DES的基础上增加了一次加密过程,即使用同一个密钥进行三次加密,这大大...
在Java中,Base64编码和解码的功能主要通过`java.util.Base64`这个类来实现,该类在Java 8及以上版本中引入。下面将详细介绍如何使用这个类进行Base64的编码和解码操作。 首先,我们来看Base64编码的过程。编码的...
Java中的Base64编码是一种将二进制数据转化为可打印字符的编码方式,常用于在网络上传输或存储非ASCII字符的数据。Base64编码的基本原理是将每3个字节(24位)的数据转化为4个6位的字符,多余的位数通过在前面补0来...
总的来说,Java提供的Base64工具类使得在Java应用程序中处理Base64编码变得简单易行,无论是对单个字节数组还是整个文件进行操作,都能高效地完成编码和解码任务。了解和掌握这些基础,对于处理涉及二进制数据转换的...
function Base64ToImage(const base64:string;AImage:TImage):Boolean; function Base64ToImageFile(const base64:string;AImagefile:string):Boolean; function CheckImgTypeBase64(abase64:string):string;
在Java编程中,将图片与Base64编码进行相互转换是一项常见的任务,特别是在网络传输、存储和显示图像数据时。Base64是一种用于将任意二进制数据转换为可打印ASCII字符的编码方式,这对于在HTTP协议下传输二进制数据...
Base64编码是一种在互联网上常见的数据编码方式,主要用于在电子邮件、HTML或XML等文本格式中传输二进制数据。这种编码方式将任意的8位字节序列转换为特定的可打印ASCII字符序列,通常由字母、数字、加号(+)和斜线...