我有一个包含数学符号的字符串,我想在java中编码和解码。
我想知道'Base64'的编码和解码是否足以满足要求。
你能帮助我知道'Base64'支持数学符号吗?等,
∞,π,∑,α,β,Ω, etc.
答案 0 :(得分:6)
引用wikipedia:
Base64是一组类似的二进制文本编码方案,通过将其转换为基数为64的表示形式,以ASCII字符串格式表示二进制数据。
重要的是:它是关于编码二进制数据。 Base64不关心二进制数据的含义。唯一重要的是:当您重建 String 对象时,您必须了解应该使用的编码。
从这个意义上说:你真的很想读 Joel Spolsky关于编码字符串的文章this。它侧重于Unicode,但它可以帮助您理解编码二进制数据之间的差异,并确保字符串包含您希望它在打印时包含的字符示例
答案 1 :(得分:0)
Base64是一种通用编码术语,它通过数字处理二进制数据并将其转换为基本64表示来对二进制数据进行编码。 当需要对需要存储的二进制数据进行编码并通过旨在处理文本数据的媒体进行传输时,通常会使用Base64编码方案。
因此, 是的,我们可以使用base 64编码对支持的数学符号进行编码。 例如,要获得数学符号的正确字节值,可以使用CharacterSet“UTF-8”。
以下是我对编码和解码字符串的两种Java方法:
//imports
import javax.xml.bind.DatatypeConverter;
public static String encode(String data){
byte[] bytedata = null;
try {
bytedata = data.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String base64Binary = DatatypeConverter.printBase64Binary(bytedata);
/* for this example I am using DatatypeConverter.printBase64Binary which is standard, you can use your own logic to encode it.
*/
return base64Binary;
}
public static String decode(String base64Binary){
byte[] bytedata = DatatypeConverter.parseBase64Binary(base64Binary);
/* Here again I have used standard decoding methods provided by java.
You can write your own decoding logic based on your encoding style.
*/
String decodedData = null;
try {
decodedData = new String(bytedata, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return decodedData;
}