亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從字符串到字節的轉換中獲得正確的值?

如何從字符串到字節的轉換中獲得正確的值?

Go
呼喚遠方 2022-08-24 11:22:03
我需要將字符串轉換為字節切片,我使用函數,但是當字符串具有字母?或帶有重音符號的某個字母時,我得到的值與預期不同。[]byte(string)fmt.Println([]byte("áéíóú?áéíóú?"))預期結果:[ 160 130 161 162 163 181 144 214 224 233 ]獲得的結果:[195 161 195 169 195 173 195 179 195 186 195 177 195 129 195 137 195 141 195 147 195 154 195 145]因此,當我將獲得的值轉換為字符串時,我得到而不是├í├?├?├│├║├?├ü├?├ì├?├ü├?áéíóú?áéíóú?如何獲得正確的值?
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊


這里有幾個問題。首先,您給出以下預期結果:


[ 160 130 161 162 163 181 144 214 224 233 ]

但是你省略了 和 ,所以預期結果應該是:??


[160 130 161 162 163 164 181 144 214 224 233 165]

其次,您鏈接到 [1] 的這個頁面說它是代碼頁 437,但它實際上是代碼頁 850。您可以看到“其他相關編碼”[2]下列出了850。下面是一個工作示例 [3]:


package main


import (

   "fmt"

   "golang.org/x/text/encoding/charmap"

)


func main() {

   b := []byte("áéíóú?áéíóú?")

   c, e := charmap.CodePage850.NewEncoder().Bytes(b)

   if e != nil {

      panic(e)

   }

   fmt.Println(c)

}

  1. https://theasciicode.com.ar

  2. https://wikipedia.org/wiki/Code_page_437

  3. https://pkg.go.dev/golang.org/x/text/encoding/charmap


查看完整回答
反對 回復 2022-08-24
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

對于這些字符,您可以使用 ascii85 編碼器/解碼器。

字節切片將與您的期望不匹配,但是,輸出將與您的輸入匹配。(我假設這是這里的關鍵)

package mainimport (    "encoding/ascii85"
    "fmt")func main() {
        enc := make([]byte, 30, 30)
        dec := make([]byte, 30, 30)
        ascii85.Encode(enc, []byte("áéíóú?áéíóú?"))
        ascii85.Decode(dec, enc, false)
        fmt.Println(enc)        
        fmt.Println(string(dec))
}

https://golang.org/pkg/encoding/ascii85/

https://play.golang.org/p/ErBSKYVBXNg


查看完整回答
反對 回復 2022-08-24
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號