如果您運行fmt.Println("\u554a")
,它會顯示'啊'。如何將符文轉換爲像Golang中的` u554a`這樣的unicode-style-string?
但如何從符文'啊'獲得unicode樣式字符串\u554a
?
如果您運行fmt.Println("\u554a")
,它會顯示'啊'。如何將符文轉換爲像Golang中的` u554a`這樣的unicode-style-string?
但如何從符文'啊'獲得unicode樣式字符串\u554a
?
IMHO,它應該是更好:
func RuneToAscii(r rune) string {
if r < 128 {
return string(r)
} else {
return "\\u" + strconv.FormatInt(int64(r), 16)
}
}
例如,
package main
import "fmt"
func main() {
r := rune('啊')
u := fmt.Sprintf("%U", r)
fmt.Println(string(r), u)
}
輸出:
啊 U+554A
在json中使用'\ u554A'常見,而不是'U + 554A'。要獲得'\ u554A',你仍然需要做一些額外的操作。它不夠整齊。 – hardPass
package main
import "fmt"
import "strconv"
func main() {
quoted := strconv.QuoteRuneToASCII('啊') // quoted = "'\u554a'"
unquoted := quoted[1:len(quoted)-1] // unquoted = "\u554a"
fmt.Println(unquoted)
}
此輸出:
\u554a
您可以使用fmt.Sprintf
與%U
一起獲得十六進制值:
test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:]) // Print \u554A
你說得對。只要將它轉換爲十六進制值即可。這個func應該更有效率:'func RuneToAscii(r rune)string',上面顯示的是 – hardPass
fmt.Printf("\\u%X", '啊')
http://play.golang.org/p/Jh9ns8Qh15
(大寫或小寫的 'X' 將控制十六進制字符的情況下)
作爲暗示在包裹fmt的documentation:
%U統一碼格式:U + 1234;與「U +%04X」相同
爲什麼要這樣做? – newacct
在json數據中使用'\ uXXXX''風格代替'ASCII'字符非常普遍。請用'jquery.getJSON()'試試這個json數據'{「one」:「\ u554a」,「two」:「啊」}'。在頁面上,你可以找到一個好的,但兩個顯示雜亂的代碼。 – hardPass
這並不常見。你誤解了JSON。 JSON由一系列字符組成。任何非ASCII字符都可以在JSON中使用。你可能使用JSON錯誤。 – newacct