【发布时间】:2019-05-06 00:16:35
【问题描述】:
我正在开发接收编码为 base64 的消息的应用程序。 可以接收所有语言的消息,也可以只包含数字。我需要将 base64 转换为可读文本。 获取文本。 我在用 apache.commons.codec.binary.Base64 和 apache.commons.codec.binary.Hex
我有两个问题:
- 当我试图解析收到的英文或数字消息时 我无法正确解析 base 64。
- 如何区分 base64 消息(由 4 位十六进制数字(如俄语或希伯来语)表示)与英语消息或数字(由 2 位十六进制数字或英语表示)。
这是我的代码:
private String convertBase64StringToText(String base64) {
base64 = "MdmMBg==";//base64.replace("\n", "").replace("\r", "");
byte[] decoded = Base64.decodeBase64(base64);
String basetohex = Hex.encodeHexString(decoded);
char ch[] = basetohex.toCharArray();
String output = new String(ch);
output = output.toUpperCase();
StringBuilder str = new StringBuilder();
for(int i=0;i<ch.length;i=i+2){
str.append((char) Integer.parseInt(output.substring(i, i + 2), 16));
//for languages like russian or hebrew i'm changing from
//output.substring(i, i + 2) to output.substring(i, i + 4) and it
//works fine
}
System.out.println("str.toString():"+str.toString());//received: 1Ù instead of 1234
return str.toString();
}
【问题讨论】:
标签: java internationalization base64 hex