Unicode
signStr := fmt.Sprintf("%x", j)
fmt.Println(signStr) //是unicode
fmt.Println(hex.EncodeToString([]byte(str)))
A := string(rstr)
fmt.Println(A) //不是Unicode,但是
sText := "王通"
textQuoted := strconv.QuoteToASCII(sText)
//textQuoted := strconv.Quote(sText)
textUnquoted := textQuoted[1 : len(textQuoted)-1]
fmt.Println(textUnquoted)
sUnicodev := strings.Split(textUnquoted, "\\u")
var context string
for _, v := range sUnicodev {
if len(v) < 1 {
continue
}
temp, err := strconv.ParseInt(v, 16, 32)
if err != nil {
panic(err)
}
context += fmt.Sprintf("%c", temp)
}
fmt.Println(context)
rs := []rune("golang中文unicode编码")
json := ""
html := ""
for _, r := range rs {
rint := int(r)
if rint < 128 {
json += string(r)
html += string(r)
} else {
json += "\\u" + strconv.FormatInt(int64(rint), 16) // json
html += "" + strconv.Itoa(int(r)) + ";" // 网页
}
}
fmt.Printf("JSON: %s\n", json)
fmt.Printf("HTML: %s\n", html)
package main
import (
"bytes"
"encoding/binary"
"encoding/hex"
"fmt"
"strings"
)
func main() {
str := "Go爱好者"
U:=Stou(str)
fmt.Println(U)
S,_ := Utos(U)
fmt.Println(S)
}
/**
Unicode转化为String
*/
func Utos(form string) (to string, err error) {
bs, err := hex.DecodeString(strings.Replace(form, `\u`, ``, -1))
if err != nil {
return
}
for i, bl, br, r := 0, len(bs), bytes.NewReader(bs), uint16(0); i < bl; i += 2 {
binary.Read(br, binary.BigEndian, &r)
to += string(r)
}
return
}
/**
String转化为Unicode
*/
func Stou(form string) (to string) {
for _,j := range form {
signStr := fmt.Sprintf("%x", j)
for i := 4-len(signStr);i>0;i-- {
signStr = "0"+signStr
}
to = to+"\\u"+signStr
}
return
}