【发布时间】:2019-10-24 15:08:26
【问题描述】:
我正在使用 JDK 1.6 并在尝试编码/解码法语单词时遇到问题。我的代码在:
String setText = "Vos factures impayées Internet sont";
String encodedText= Base64.encode(setText.getBytes());
Base64.decode(encodedText);
System.out.println("Encoded String: " + encodedText);
byte[] result = Base64.decode(encodedText);
String decodedString = new String(result);
System.out.println("Decoded: " + decodedString);
结果是: 原始字符串 Vos Factures impayées Internet sont
编码字符串:Vm9zIGZhY3R1cmVzIGltcGF577+9ZXMgSW50ZXJuZXQgc29udA==
解码:Vos factures impay�es Internet sont
问题:在解码字符串时,我得到“�”特殊字符而不是“é”
【问题讨论】:
-
程序实际上认为你的字符串是
"Vos factures impay�es Internet sont",因为你的源文件的编码与Java编译器假定的文件编码不匹配。我的猜测是您将文件保存为 ISO 8859-1,但 Java 编译器假定为 UTF-8(因为 UTF-8 是所有非 Windows 系统上的默认编码)。确保您已将文件保存为 UTF-8 文件。 -
不,我没有将其保存在 ISO 8859-1 中
-
String setText = "…"行的十六进制转储,使用操作系统命令而不是 Java 代码执行,将非常有用。
标签: java encoding base64 string-decoding