を実行するfmt.Println("\u554a")
と「啊」と表示されます。
\u554a
しかし、ルーン '啊' からunicode-style-string を取得する方法は?
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
私見、それはより良いはずです:
func RuneToAscii(r rune) string {
if r < 128 {
return string(r)
} else {
return "\\u" + strconv.FormatInt(int64(r), 16)
}
}
fmt.Sprintf
と一緒に使用し%U
て、16 進数値を取得できます。
test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:]) // Print \u554A
fmt.Printf("\\u%X", '啊')
http://play.golang.org/p/Jh9ns8Qh15
(大文字または小文字の「x」は、16 進文字の大文字と小文字を制御します)
パッケージ fmt のドキュメントで示唆されているように:
%U ユニコード形式: U+1234; 「U+%04X」と同じ
例えば、
package main
import "fmt"
func main() {
r := rune('啊')
u := fmt.Sprintf("%U", r)
fmt.Println(string(r), u)
}
出力:
啊 U+554A