20

を実行するfmt.Println("\u554a")と「啊」と表示されます。

\u554aしかし、ルーン '啊' からunicode-style-string を取得する方法は?

4

8 に答える 8

17
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
于 2013-05-22T03:19:41.307 に答える
12

私見、それはより良いはずです:

func RuneToAscii(r rune) string {
    if r < 128 {
        return string(r)
    } else {
        return "\\u" + strconv.FormatInt(int64(r), 16)
    }
}
于 2013-05-22T05:49:03.967 に答える
4

fmt.Sprintfと一緒に使用し%Uて、16 進数値を取得できます。

test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:]) // Print \u554A
于 2013-05-22T03:22:46.143 に答える
1
fmt.Printf("\\u%X", '啊')

http://play.golang.org/p/Jh9ns8Qh15

(大文字または小文字の「x」は、16 進文字の大文字と小文字を制御します)

パッケージ fmt のドキュメントで示唆されているように:

%U ユニコード形式: U+1234; 「U+%04X」と同じ

于 2013-05-26T15:01:49.140 に答える
1

例えば、

package main

import "fmt"

func main() {
    r := rune('啊')
    u := fmt.Sprintf("%U", r)
    fmt.Println(string(r), u)
}

出力:

啊 U+554A
于 2013-05-22T03:15:24.723 に答える