Як пераўтварыць руну юнікод-стыль-радкі, як `\ u554a` ў Golang?

Пры запуску fmt.Println ( "\ u554a") , ён паказвае '啊.

Але як атрымаць Юнікод-стыль-радок \ u554a з руна "啊?

18
Гэта не мае нічога агульнага. Вы памыляецеся аб JSON. JSON складаецца з паслядоўнасці знакаў. Любыя выкарыстаннем не-ASCII сымбалі могуць быць выкарыстаны ў фармаце JSON. Верагодна, вы карыстаецеся JSON няправільна.
дададзена аўтар newacct, крыніца
Гэта не мае нічога агульнага. Вы памыляецеся аб JSON. JSON складаецца з паслядоўнасці знакаў. Любыя выкарыстаннем не-ASCII сымбалі могуць быць выкарыстаны ў фармаце JSON. Верагодна, вы карыстаецеся JSON няправільна.
дададзена аўтар newacct, крыніца
кожны раз, калі вы перакладаеце тэкст, абодва бакі павінны дакладна ведаць, што выкарыстоўваецца кадзіроўка
дададзена аўтар newacct, крыніца
кожны раз, калі вы перакладаеце тэкст, абодва бакі павінны дакладна ведаць, што выкарыстоўваецца кадзіроўка
дададзена аўтар newacct, крыніца
чаму вы хочаце гэта зрабіць?
дададзена аўтар newacct, крыніца
Калі ў вас ёсць дадзеныя і не ведаюць, што кадаваньне гэта, гэта цалкам бескарысна. Вы не можаце выкарыстоўваць яго на ўсіх. Вы можаце думаць, што ўсе кадоўкі ASCII-сумяшчальная. Але большасць кадовак у свеце не з'яўляецца ASCII-сумяшчальным.
дададзена аўтар newacct, крыніца
Калі ў вас ёсць дадзеныя і не ведаюць, што кадаваньне гэта, гэта цалкам бескарысна. Вы не можаце выкарыстоўваць яго на ўсіх. Вы можаце думаць, што ўсе кадоўкі ASCII-сумяшчальная. Але большасць кадовак у свеце не з'яўляецца ASCII-сумяшчальным.
дададзена аўтар newacct, крыніца
Агульныя ці не, гэта не вельмі важна. Цалкам магчыма, ёсць спосабы лепш, чым гэтая нованавернутых-рэч. І ў маім бізнес-EDI, такія праблемы, як гэта часта з'яўляюцца. І гэта юнікода стыль пераўтварэнні з'яўляецца свайго роду перадавой практыкі, што ў цяперашні час. Вядома, я пытаўся кліентаў, чаму не выкарыстоўваць UTF-8 у якасці стандарту.
дададзена аўтар hardPass, крыніца
Агульныя ці не, гэта не вельмі важна. Цалкам магчыма, ёсць спосабы лепш, чым гэтая нованавернутых-рэч. І ў маім бізнес-EDI, такія праблемы, як гэта часта з'яўляюцца. І гэта юнікода стыль пераўтварэнні з'яўляецца свайго роду перадавой практыкі, што ў цяперашні час. Вядома, я пытаўся кліентаў, чаму не выкарыстоўваць UTF-8 у якасці стандарту.
дададзена аўтар hardPass, крыніца
@newacct Дазвольце мне падзяліцца выпадак ад аднаго. Гэта правайдэр AD, які забяспечвае AD-JSON (UTF-8) да групы з втор-агентаў, а затым S-агенты праходзяць AD да канчатковага класа сайтаў. Цэлыя ланцугі працуюць добра, калі некаторыя з втор-агентаў не праходзяць AD-JSON ў розных кадоўках, якія выклікаюць скажонае адлюстраванне ў канчатковым канцы старонкі. Яны не вельмі клапаціцца аб тым, што прычынай кадавання змянілася праз сістэмы s-агента, могуць быць некаторыя спадчыну патрабаванне або проста памылкі. Тое, што яны сапраўды клапоцяцца пра тое, каб эфектыўна зафіксаваў яго. Такім чынам, яны ператвараюць руны юнікода стылю ў каранёвай сістэме, і ўсе старонкі адлюстроўваюцца добра ў цяперашні час.
дададзена аўтар hardPass, крыніца
@newacct Дазвольце мне падзяліцца выпадак ад аднаго. Гэта правайдэр AD, які забяспечвае AD-JSON (UTF-8) да групы з втор-агентаў, а затым S-агенты праходзяць AD да канчатковага класа сайтаў. Цэлыя ланцугі працуюць добра, калі некаторыя з втор-агентаў не праходзяць AD-JSON ў розных кадоўках, якія выклікаюць скажонае адлюстраванне ў канчатковым канцы старонкі. Яны не вельмі клапаціцца аб тым, што прычынай кадавання змянілася праз сістэмы s-агента, могуць быць некаторыя спадчыну патрабаванне або проста памылкі. Тое, што яны сапраўды клапоцяцца пра тое, каб эфектыўна зафіксаваў яго. Такім чынам, яны ператвараюць руны юнікода стылю ў каранёвай сістэме, і ўсе старонкі адлюстроўваюцца добра ў цяперашні час.
дададзена аўтар hardPass, крыніца
Гэта правільна, што не-ASCII сымбалі могуць быць выкарыстаны ў фармаце JSON. Але вы павінны ведаць, што не ўсе бізнес-сістэмы маюць справу з UTF-8 кадоўкай. Як вы маеце справу з рознымі дадзенымі ў іншы кадоўцы з іншай сістэмы? Можа быць, гэта не з'яўляецца агульным для вас. Я мяркую, што ў вас ёсць ідэя лепей.
дададзена аўтар hardPass, крыніца
Вельмі часта, каб выкарыстоўваць \ ихххх -стыль замест None-ASCII-сімвал, як «世界» ў дадзеных JSON. Калі ласка, паспрабуйце гэта JSon дадзеныя { "адзін": "\ u554a", "два": "啊"} па jquery.getJSON() . А на старонцы, вы можаце знайсці адзін добра, але два паказвае брудны код.
дададзена аўтар hardPass, крыніца
Вельмі часта, каб выкарыстоўваць \ ихххх -стыль замест None-ASCII-сімвал, як «世界» ў дадзеных JSON. Калі ласка, паспрабуйце гэта JSon дадзеныя { "адзін": "\ u554a", "два": "啊"} па jquery.getJSON() . А на старонцы, вы можаце знайсці адзін добра, але два паказвае брудны код.
дададзена аўтар hardPass, крыніца

9 адказы

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
15
дададзена
Ёсць яшчэ адна функцыя, каб пайсці іншым шляхам? <�Код> \ u554a -> 啊?
дададзена аўтар 425nesp, крыніца
@hardPass я трохі аддаю перавагу мой шлях, але я таксама твой падабаецца, і я магу зразумець, чаму вы аддаеце перавагу. Гэта ваша пытанне, не саромейцеся, каб адзначыць свой уласны ў якасці абранага адказу.
дададзена аўтар Darshan Rivka Whittle, крыніца
Існуе ў двукоссях версія для RuneToASCII ў афіцыйным пакеце, але чаму б не даць нам прамой FUNC без двукоссяў. Я баюся, што гэта не ў чыстым выглядзе дастаткова, абумоўлена справу з цытатай. Так што я проста даць FUNC RuneToASCII вышэй. Гэта здаецца больш эфектыўным.
дададзена аўтар 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
15
дададзена
Ёсць яшчэ адна функцыя, каб пайсці іншым шляхам? <�Код> \ u554a -> 啊?
дададзена аўтар 425nesp, крыніца
@hardPass я трохі аддаю перавагу мой шлях, але я таксама твой падабаецца, і я магу зразумець, чаму вы аддаеце перавагу. Гэта ваша пытанне, не саромейцеся, каб адзначыць свой уласны ў якасці абранага адказу.
дададзена аўтар Darshan Rivka Whittle, крыніца
Існуе ў двукоссях версія для RuneToASCII ў афіцыйным пакеце, але чаму б не даць нам прамой FUNC без двукоссяў. Я баюся, што гэта не ў чыстым выглядзе дастаткова, абумоўлена справу з цытатай. Так што я проста даць FUNC RuneToASCII вышэй. Гэта здаецца больш эфектыўным.
дададзена аўтар hardPass, крыніца

ІМХО, яна павінна быць лепш:

func RuneToAscii(r rune) string {
    if r < 128 {
        return string(r)
    } else {
        return "\\u" + strconv.FormatInt(int64(r), 16)
    }
}
10
дададзена

Вы можаце выкарыстоўваць fmt.Sprintf разам з % U , каб атрымаць шаснаццатковае значэнне:

test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:])//Print \u554A
4
дададзена
Ты маеш рацыю. Гэта павінна быць у парадку, толькі пераўтварыўшы яго ў шаснаццатковае. І гэтая FUNC павінна быць больш эфектыўнай: FUNC RuneToAscii (г руно) радок , які паказаны вышэй
дададзена аўтар hardPass, крыніца

Вы можаце выкарыстоўваць fmt.Sprintf разам з % U , каб атрымаць шаснаццатковае значэнне:

test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:])//Print \u554A
4
дададзена
Ты маеш рацыю. Гэта павінна быць у парадку, толькі пераўтварыўшы яго ў шаснаццатковае. І гэтая FUNC павінна быць больш эфектыўнай: FUNC RuneToAscii (г руно) радок , які паказаны вышэй
дададзена аўтар hardPass, крыніца

Напрыклад,

package main

import "fmt"

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

выхад:

啊 U+554A
1
дададзена
Распаўсюджана выкарыстоўваць \ u554A ў фармаце JSON, а не U + 554A . Каб атрымаць \ u554A , вам усё яшчэ трэба зрабіць некаторыя дадатковыя аперацыі. Гэта не ў чыстым выглядзе дастаткова.
дададзена аўтар hardPass, крыніца

Напрыклад,

package main

import "fmt"

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

выхад:

啊 U+554A
1
дададзена
Распаўсюджана выкарыстоўваць \ u554A ў фармаце JSON, а не U + 554A . Каб атрымаць \ u554A , вам усё яшчэ трэба зрабіць некаторыя дадатковыя аперацыі. Гэта не ў чыстым выглядзе дастаткова.
дададзена аўтар hardPass, крыніца
fmt.Printf("\\u%X", '啊')

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

(Верхні ці ніжні рэгістр «х» будзе кантраляваць выпадак шасцігранная сімвалаў)

Як намякаюць дакументацыі :

<�Р>% Фармат U Юнікода: U + 1234; гэтак жа, як "U +% 04X"
1
дададзена
Гэта павінна быць абрана адказ - Няма неабходнасці StrConv пакет на ўсіх.
дададзена аўтар xpt, крыніца
Калі ўваход ўжо assii, я хацеў бы, каб быць самім сабой. Як «а», вяртанне занесены «а» замест «\» U61. Я павінен быў згадаць пра гэта раней. Здаецца, што вы, хлопцы, не прымайце гэта як агульнае патрабаванне. Я сапраўды wordering пра гэта. Ах, але гэта нармальна, што ў мяне ёсць FUNC мог бы зрабіць сваю працу.
дададзена аўтар hardPass, крыніца
fmt.Printf("\\u%X", '啊')

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

(Верхні ці ніжні рэгістр «х» будзе кантраляваць выпадак шасцігранная сімвалаў)

Як намякаюць дакументацыі :

<�Р>% Фармат U Юнікода: U + 1234; гэтак жа, як "U +% 04X"
1
дададзена
Гэта павінна быць абрана адказ - Няма неабходнасці StrConv пакет на ўсіх.
дададзена аўтар xpt, крыніца
Калі ўваход ўжо assii, я хацеў бы, каб быць самім сабой. Як «а», вяртанне занесены «а» замест «\» U61. Я павінен быў згадаць пра гэта раней. Здаецца, што вы, хлопцы, не прымайце гэта як агульнае патрабаванне. Я сапраўды wordering пра гэта. Ах, але гэта нармальна, што ў мяне ёсць FUNC мог бы зрабіць сваю працу.
дададзена аўтар hardPass, крыніца