2017-05-01 124 views
1

我意识到这个问题可能是愚蠢的,但嘿,粗糙的一天。无论如何,鉴于此:将字节数组转换为字符串并返回

scala> import java.nio.charset.Charset 
import java.nio.charset.Charset 

scala> val alpha = Array[Byte](2,-9,-7,-126,-36,-41,-16,56) 
alpha: Array[Byte] = Array(2, -9, -7, -126, -36, -41, -16, 56) 

scala> val beta = new String(alpha, Charset.forName("UTF-8")) 
beta: String = ?������8 

scala> val gamma = beta.getBytes(Charset.forName("UTF-8")) 
gamma: Array[Byte] = Array(2, -17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, 56) 

为什么不alpha == gamma?什么是正确的方法来做到这一点?

更新:我看到Base64编码/解码工程。但我仍然对UTF-8为什么不感兴趣。也许是因为没有一个或多个字节的UTF-8表示。

回答

2

UTF-8使用一到四个字节的无符号值。 当你将这些值下溢时,你将不得不弄清楚你实际获得的UTF-8值。

如果检查new String(alpha) == new String(gamma),你会看到,它返回true。

相关问题