osx外壳can';不能从Java解码
我在使用Base64编码时遇到了一个奇怪的行为 从OSX中的shell中,我执行以下操作:osx外壳can';不能从Java解码,java,macos,base64,Java,Macos,Base64,我在使用Base64编码时遇到了一个奇怪的行为 从OSX中的shell中,我执行以下操作: $ echo "hello world" | base64 -out my-file $ cat my-file aGVsbG8gd29ybGQK 然后运行以下Kotlin/Java代码: 导入java.nio.file.Files 导入java.nio.file.Path 导入java.util.Base64 主要内容(){ val content=Files.readAllBy
$ echo "hello world" | base64 -out my-file
$ cat my-file
aGVsbG8gd29ybGQK
然后运行以下Kotlin/Java代码:
导入java.nio.file.Files
导入java.nio.file.Path
导入java.util.Base64
主要内容(){
val content=Files.readAllBytes(路径“./my file”))
println(“内容=>${String(内容)}”)
val decode=Base64.getDecoder().decode(内容)
println(“==>$decode”)
}
但我有以下例外:
content=> aGVsbG8gd29ybGQK
Exception in thread "main" java.lang.IllegalArgumentException: Illegal base64 character a
at java.base/java.util.Base64$Decoder.decode0(Base64.java:791)
at java.base/java.util.Base64$Decoder.decode(Base64.java:567)
at MainKt.main(Main.kt:8)
at MainKt.main(Main.kt)
编辑:
更改base64使用其工作的另一个类解码的方式:
导入java.nio.file.Files
导入java.nio.file.Path
主要内容(){
val content=Files.readAllBytes(路径“./my file”))
val decode=org.apache.tomcat.util.codec.binary.Base64.decodeBase64(内容)
println(“==>${String(decode)}”)
}
印刷品:
==>hello world
您是否检查了内容的值
?它与您的文件内容匹配吗?另外,您是否意识到decode()
返回一个字节数组,即decode
将具有类型byte[]
?是的,内容是正确的,decode
方法需要一个byte[]
:(另一个是decode(字符串).稍微挖掘一下,base64
命令生成的文件似乎在文件末尾有一个新行