2016-03-27 33 views
2

我有使用Base64編碼的UTF8字符。我正在解碼它並試圖打印它。但它唯一的價值在於它的十六進制值,但不是UTF-8字符串。Base64對UTF 8字符進行解碼並將其打印出來

事情我想

1:我已經驗證字符在線解碼器,它告訴我,我得到的字符串是正確的格式: https://www.base64decode.org/

2:System.getProperty(「file.encoding的「)也是UTF8

def main(args: Array[String]): Unit = { 
    println("Hello, world!") 

    val sd = Base64.getDecoder.decode("7IiY7KeE7IiY7KeE7IiY7KeE7IiY7KeE7IiY7KeE7IiY7KeE7IiY7KeE7IiY7KeE7IiY") 
    println(System.getProperty("file.encoding")) 
    println(sd.toString()) 

    val sb = new StringBuffer 

    var i:Int=0 

    while(i<sd.length){ 
     sb.append("%02X".format(sd(i) & 0xff)) 

     i=i+1 

    } 
    println(sb) 

    } 

我在這裏錯過了什麼? 需要Actruall字符串是如下:

수진수진수진수진수진수진수진수진수

回答

1

爲什麼不簡單地使用new String(sd, "UTF-8"),這將返回你的角色。在我的機器上工作,結果如下:수진수진수진수진수진수진수진수진수

0

X"%02X".format(sd(i) & 0xff)指定大寫十六進制。嘗試使用%s以獲取UTF-8字符串。

+0

您好,感謝您的回答。我嘗試過sb.append(「%s」.format(sd(i)&0xff))但我沒有得到所需的UTF8消息 – vrbilgi

+0

你在得到什麼? – kliew

+0

它打印每個字符Ascii值236136152236167132236136152236167132236136152236167132236136152236167132236136152236167132236136152236167132236136152236167132236136152236167132236136152 – vrbilgi