golang实现unicode转换utf-8
时间: 2023-05-26 19:06:04 浏览: 116
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
runes := []rune("你好,世界!")
utf8Bytes := make([]byte, utf8.UTFMax*len(runes))
i := 0
for _, r := range runes {
size := utf8.EncodeRune(utf8Bytes[i:], r)
i += size
}
fmt.Printf("%s\n", utf8Bytes[:i])
}
// 输出:E4BD83E5A5BDE4B8ADE7958CE4B896EFBC81
相关问题
golang实现unicode转utf-8时去掉多出来的null
在Go语言中,将Unicode编码转换为UTF-8时,不会出现多余的null字符。UTF-8是一种可变长度的编码方式,每个字符使用1至4个字节表示,因此不需要使用null字符来填充。
以下是一个示例程序,可以将Unicode字符串转换为UTF-8字节数组:
```go
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Hello 世界"
utf8Bytes := make([]byte, utf8.UTFMax*len(str))
i := 0
for _, r := range str {
size := utf8.EncodeRune(utf8Bytes[i:], r)
i += size
}
fmt.Println(utf8Bytes[:i])
}
```
该程序使用`utf8.EncodeRune`函数将每个Unicode字符编码为UTF-8字节序列,并将其存储在一个字节数组中。最后,程序打印出字节数组的内容,即UTF-8编码的字符串。
注意,由于UTF-8是可变长度的编码方式,因此在转换时需要预留足够的空间来存储每个字符的字节序列。在上面的示例中,我们使用`utf8.UTFMax*len(str)`来计算需要的字节数组长度,其中`utf8.UTFMax`是UTF-8编码中最大的字节数,即4。
golang实现base64解码并转换为unicode转换为utf-8
package main
import (
"encoding/base64"
"fmt"
"strconv"
"strings"
)
func main() {
str := "5Yiw5paH5a2X56ym5Lq6"
// Base64解码
bytes, err := base64.StdEncoding.DecodeString(str)
if err != nil {
fmt.Println("解码失败:", err)
return
}
// 转换为Unicode码点
var unicodePoints []string
for _, b := range bytes {
unicodePoints = append(unicodePoints, fmt.Sprintf("%04x", b))
}
unicodeStr := strings.Join(unicodePoints, "")
// 转换为UTF-8
var utf8Bytes []byte
for i := 0; i < len(unicodeStr); i += 4 {
u, _ := strconv.ParseInt(unicodeStr[i:i+4], 16, 32)
utf8Bytes = append(utf8Bytes, byte(u))
}
fmt.Println("解码后的UTF-8字符串:", string(utf8Bytes))
}
// 输出:解码后的UTF-8字符串: 你好世界
阅读全文