Jeśli uruchomisz fmt.Println("\u554a")
, wyświetli się "啊".Jak przekonwertować runę na ciąg znaków w stylu Unicode, jak ` u554a` w Golang?
Ale jak uzyskać ciąg znaków w stylu Unicode \u554a
z runy "啊"?
Jeśli uruchomisz fmt.Println("\u554a")
, wyświetli się "啊".Jak przekonwertować runę na ciąg znaków w stylu Unicode, jak ` u554a` w Golang?
Ale jak uzyskać ciąg znaków w stylu Unicode \u554a
z runy "啊"?
IMHO powinno być lepiej:
func RuneToAscii(r rune) string {
if r < 128 {
return string(r)
} else {
return "\\u" + strconv.FormatInt(int64(r), 16)
}
}
Na przykład
package main
import "fmt"
func main() {
r := rune('啊')
u := fmt.Sprintf("%U", r)
fmt.Println(string(r), u)
}
wyjścia:
啊 U+554A
Powszechne jest używanie '\ u554A' w jsonie, a nie' U + 554A'.Aby uzyskać '\ u554A', nadal potrzebujesz wykonać dodatkowe operacje. To nie jest wystarczająco miłe. – 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)
}
This wyjścia:
\u554a
Istnieje cytowana wersja dla 'RuneToASCII' w oficjalnym pakiecie, ale dlaczego nie dać nam bezpośredniego func bez cytatu. Obawiam się, że nie jest to wystarczająco gładkie, ponieważ dotyczy to cytatu. Więc po prostu podaję func 'RuneToASCII' powyżej. Wydaje się bardziej skuteczny. – hardPass
@hardPass Trochę wolę swoją drogę, ale lubię też twoją i widzę, dlaczego wolisz. To jest Twoje pytanie, możesz zaznaczyć własną jako wybraną odpowiedź. –
Czy istnieje inna funkcja, aby przejść w drugą stronę? '\ u554a' -> 啊? – 425nesp
Można używać fmt.Sprintf
wraz z %U
uzyskać wartość szesnastkową:
test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:]) // Print \u554A
Masz rację. Powinno być ok, po prostu konwertując je do wartości szesnastkowej. I ten func powinien być bardziej wydajny: 'func RuneToAscii (r rune) string', który jest powyżej pokazany – hardPass
fmt.Printf("\\u%X", '啊')
http://play.golang.org/p/Jh9ns8Qh15
(górna lub mała litera 'x' będzie kontrolował przypadku znaków hex)
jako zasugerowane przez pakiet fmt's documentation:
% U Format Unicode: U + 1234; taki sam jak "U +% 04X"
Kiedy wejście jest już assii, chciałbym, żeby było samo. Podobnie jak "a" wprowadzono, zwróć "a" zamiast "\ u61". Powinienem wspomnieć o tym wcześniej. Wygląda na to, że nie traktujecie tego jako powszechnego wymogu. Naprawdę o tym mówiłem. Ach, ale dobrze, że mam func, mogę wykonać swoją pracę. – hardPass
To powinna być wybrana odpowiedź - w ogóle nie potrzebujesz pakietu "strconv". – xpt
dlaczego chcesz to zrobić? – newacct
Bardzo często używa się stylu '\ uXXXX' zamiast żadnego znaku ASCII, takiego jak" 世界 "w danych json. Proszę wypróbować te dane json '{" one ":" \ u554a "," two ":" 啊 "}' przez 'jquery.getJSON()'. I na stronie można znaleźć jeden jest w porządku, ale dwa pokazuje niechlujny kod. – hardPass
Nie jest powszechne. Mylisz się co do JSON. JSON składa się z sekwencji znaków. Dowolny znak spoza ASCII może być użyty w JSON. Prawdopodobnie używasz JSON źle. – newacct