[英]How to post cyrillic symbols in WINDOWS-1251 with OkHttp library?
[英]Base64 String to Windows1251 (cyrillic symbols)
我在将电子邮件附件(Windows-1251带有拉丁和西里尔字母编码的简单文本文件)转换为字符串时遇到麻烦。 即我在转换西里尔字母时遇到问题。 我得到的附件文件是base64编码的String,如下所示:
因此,当我尝试对其进行解码时,我得到了“?” 而不是西里尔符号。
如何获得正确的西里尔字母(俄语)而不是“?”符号?
我已经用所有编码尝试了此代码,但是没有帮助获得正确的俄语符号。
BASE64Decoder dec = new BASE64Decoder();
for (String key : Charset.availableCharsets().keySet()) {
System.out.println("K=" + key + " Value:" +
Charset.availableCharsets().get(key));
try {
System.out.println(new String(dec.decodeBuffer(encoded), key));
} catch (Exception e) {
continue;
}
}
预先谢谢你。
我对BPEL及其使用的协议不是很熟悉。 如果您使用某些二进制协议在节点之间进行通信,则必须1)确保客户端和接收方使用相同的字符集,以及2)使用此编码将Java字符串转换为正确的字节。 Java在内部以UTF-16格式存储字符串。 因此,当您执行String correct = new String(commonName.getBytes("ISO-8859-1"), "ISO-8859-5")
您将在UTF-16中获得正确的字符串。 然后,您需要将其导出为请求编码的字节,例如。 byte[] buff = correct.getBytes("UTF-8")
假定您在节点之间使用的编码为UTF-8。 如果发生编码是不同的,那么你必须确保,它实际上支持西里尔字符(如ISO-8859-1 不支持它)。
如果使用XML进行数据交换,请确保在<?xml encoding="UTF-8"?>
使用合适的编码。 然后,您无需再玩字节,只需要正确地“导入”字符串即可(请参见correct
变量)。 写入XML会自动转换字符,但是它(编码)必须支持您要写入的字符。 因此,如果您设置encoding="ISO-88591"
,那么您将再次得到那些问号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.