나는이 질문이 아마 어리석은 것임을 압니다. 그러나 헤이, 힘든 하루입니다. 어쨌든 다음을 고려하면 :
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 표현이 없기 때문일 수 있습니다.
UTF-8은 1-4 바이트 부호없는 값을 사용합니다. 그런 값을 언더 플로 할 때 실제로 얻는 UTF-8 값을 파악해야합니다.
을 확인 new String(alpha) == new String(gamma)
하면 true를 반환하는 것을 볼 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다