go - 如何解码 base64 字符串并获得包括重音符号在内的正确字符?

标签 go base64 special-characters accent-sensitive

我必须用 golang 解码一个包含西类牙语单词、带有重音符号和特殊字符的字符串。但是我尝试过的方法不起作用。能否请您指导我走正确的道路,以获得我需要的东西。提前致谢。这是我当前的代码:

import (
    "encoding/base64"
    "fmt"

    "golang.org/x/text/encoding/unicode"
)

    var authStr = "2m5pY2E6U+06e1v28V19Okludml0YWNp824="
    arB, _ := base64.StdEncoding.DecodeString(authStr)
    fmt.Println("De arB se obtuvo: ")
    fmt.Println(string(arB)) 
    // got->        �nica:S�:{[��]}:Invitaci�n
    // expected->   Única:Sí:{[öñ]}:Invitación
    dec := unicode.UTF8.NewDecoder()
    arButf8 := make([]byte, len(arB)*2)
    if n, _, err := dec.Transform(arButf8, []byte(arB), true); err != nil {
        fmt.Println("Error: ", err)
    } else {
        arButf8 = arButf8[:n]
        fmt.Println("De authStr se obtuvo: ")
        fmt.Println(string(arButf8)) 
        // got->        �nica:S�:{[��]}:Invitaci�n
        // expected->   Única:Sí:{[öñ]}:Invitación          
    }
    // If do with Javascript atob("2m5pY2E6U+06e1v28V19Okludml0YWNp824=") works fine

最佳答案

这是正确的代码:

    import (
     "encoding/base64"
     "fmt"
     "golang.org/x/text/encoding/charmap"
    )
    var authStr = "2m5pY2E6U+06e1v28V19Okludml0YWNp824="
    arB, _ := base64.StdEncoding.DecodeString(authStr)
    fmt.Println("De arB se obtuvo: ")
    fmt.Println(string(arB)) 
    dec := charmap.ISO8859_1.NewDecoder()
    arBdest := make([]byte, len(arB)*2)
    if n, _, err := dec.Transform(arBdest, []byte(arB), true); err != nil {
        fmt.Println("Error: ", err)
    } else {
        arBdest = arBdest[:n]
        fmt.Println("De authStr se obtuvo: ")
        fmt.Println(string(arBdest))         
    }

关于go - 如何解码 base64 字符串并获得包括重音符号在内的正确字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50471612/

相关文章:

for-loop - 仅迭代 Go 模板中数组的前 n 项

java - 是否有任何库可以在 Java 中使用 RFC 3548 对字符串进行 Base64 编码/解码

mysql - 直接将图像存储在数据库中还是作为base64数据?

javascript - jquery ajax获取特殊字符(元音变音)

go - 更新 : Send the origin header with js websockets

golang webapp init.d 脚本挂起

go - golang中的FFmpeg I-P帧命令

node.js - utf-8 编码的字符串到缓冲区 node.js

t-sql - 如何根据匹配的特殊字符更新sql列

jsf - 如何转义/避免 JSF url 中的与号 (&)