golang: 中文转unicode字符
一,代码:
Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
以满足跨语言、跨平台进行文本转换、处理的要求
package controller
import (
"encoding/json"
"fmt"
"github.com/gofiber/fiber/v2"
"log"
"strconv"
"strings"
"time"
"unicode"
)
type TestController struct{}
func NewTestController() *TestController {
return &TestController{}
}
func unicodeToUtf16(s string) string {
var result []string
for _, r := range s {
if unicode.IsLetter(r) || unicode.IsNumber(r) {
result = append(result, "\\u"+strconv.FormatInt(int64(r), 16))
} else {
result = append(result, string(rune(r)))
}
}
return strings.Join(result, "")
}
func (dc *TestController) Test(c *fiber.Ctx) error {
sText := "hello 你好"
fmt.Println("原文:",sText)
//第一种方式:
textQuoted := strconv.QuoteToASCII(sText)
textUnquoted := textQuoted[1 : len(textQuoted)-1]
fmt.Println(textUnquoted)
//第二种方式:
text := unicodeToUtf16(sText)
fmt.Println(text)
}
二,效果:
原文: hello 你好
hello \u4f60\u597d
\u68\u65\u6c\u6c\u6f \u4f60\u597d