php和go base64含不可见字符结果不一致

加密字符串的ASCII:

149
102
100
152
109
153
155
113

php
算法: base64_encode
结果: lWZkmG2Zm3E=

go
算法: base64.StdEncoding.EncodeToString
结果: wpVmZMKYbcKZwptx

这是为什么? 两个语言的base64标准不一样?还是别的什么问题导致的?

阅读 6k
2 个回答

你go用utf8计算的base64,我在官网在线计算的是对的,附上在线计算的代码.https://play.golang.org/p/fFcixgoAFHZ

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    data := []byte{149, 102, 100, 152, 109, 153, 155, 113}
    fmt.Println(base64.RawStdEncoding.EncodeToString(data))
    data = []byte("\u0095fd\u0098m\u0099\u009bq")
    fmt.Println(base64.RawStdEncoding.EncodeToString(data))
}

// lWZkmG2Zm3E= 
// wpVmZMKYbcKZwptx

golang 的看起来是先转成了 utf8 再做的 base64 。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题