Jak przekonwertować tekst ansi na utf8 w języku golang (go language)? Próbuję przekonwertować ciągi ansi na ciąg utf8.Przejdź do języka, w jaki sposób konwertować tekst ansi na utf8?
Odpowiedz
Go ma tylko ciągi UTF-8. można przekonwertować coś na ciąg UTF8 przy użyciu opisanego tutaj konwersję z byte []:
Nie ma sposobu, aby to zrobić bez pisania konwersja samodzielnie lub przy użyciu pakietu innej firmy. Możesz spróbować użyć tego: http://code.google.com/p/go-charset
Napisałem funkcję, która była przydatna dla mnie, może ktoś inny może z niej skorzystać. Konwertuje z Windows-1252
na UTF-8
. Mam przeliczone kilka punktów kod, który Windows-1252
traktuje jako znaki Unicode, ale uważa się znaki sterujące (http://en.wikipedia.org/wiki/Windows-1252)
func fromWindows1252(str string) string {
var arr = []byte(str)
var buf bytes.Buffer
var r rune
for _, b := range(arr) {
switch b {
case 0x80:
r = 0x20AC
case 0x82:
r = 0x201A
case 0x83:
r = 0x0192
case 0x84:
r = 0x201E
case 0x85:
r = 0x2026
case 0x86:
r = 0x2020
case 0x87:
r = 0x2021
case 0x88:
r = 0x02C6
case 0x89:
r = 0x2030
case 0x8A:
r = 0x0160
case 0x8B:
r = 0x2039
case 0x8C:
r = 0x0152
case 0x8E:
r = 0x017D
case 0x91:
r = 0x2018
case 0x92:
r = 0x2019
case 0x93:
r = 0x201C
case 0x94:
r = 0x201D
case 0x95:
r = 0x2022
case 0x96:
r = 0x2013
case 0x97:
r = 0x2014
case 0x98:
r = 0x02DC
case 0x99:
r = 0x2122
case 0x9A:
r = 0x0161
case 0x9B:
r = 0x203A
case 0x9C:
r = 0x0153
case 0x9E:
r = 0x017E
case 0x9F:
r = 0x0178
default:
r = rune(b)
}
buf.WriteRune(r)
}
return string(buf.Bytes())
}
Oto nowsza metoda.
package main
import (
"bytes"
"fmt"
"io/ioutil"
"golang.org/x/text/encoding/traditionalchinese"
"golang.org/x/text/transform"
)
func Decode(s []byte) ([]byte, error) {
I := bytes.NewReader(s)
O := transform.NewReader(I, traditionalchinese.Big5.NewDecoder())
d, e := ioutil.ReadAll(O)
if e != nil {
return nil, e
}
return d, nil
}
func main() {
s := []byte{0xB0, 0xAA}
b, err := Decode(s)
fmt.Println(string(b))
fmt.Println(err)
}
ja byliśmy wykorzystanie iconv-go zrobić takiego nawróconego, trzeba wiedzieć, jaka jest twoja strona kodowa ANSI, w moim przypadku jest to „big5”.
package main
import (
"fmt"
//iconv "github.com/djimenez/iconv-go"
iconv "github.com/andelf/iconv-go"
"log"
)
func main() {
ibuf := []byte{170,76,80,67}
var obuf [256]byte
// Method 1: use Convert directly
nR, nW, err := iconv.Convert(ibuf, obuf[:], "big5", "utf-8")
if err != nil {
log.Fatalln(err)
}
log.Println(nR, ibuf)
log.Println(obuf[:nW])
fmt.Println(string(obuf[:nW]))
// Method 2: build a converter at first
cv, err := iconv.NewConverter("big5", "utf-8")
if err != nil {
log.Fatalln(err)
}
nR, nW, err = cv.Convert(ibuf, obuf[:])
if err != nil {
log.Fatalln(err)
}
log.Println(string(obuf[:nW]))
}
golang.org/x/text/encoding/charmap
pakiet posiada funkcje dokładnie tego problemu
import "golang.org/x/text/encoding/charmap"
func DecodeWindows1250(enc []byte) string {
dec := charmap.Windows1250.NewDecoder()
out, _ := dec.Bytes(enc)
return string(out)
}
func EncodeWindows1250(inp string) []byte {
enc := charmap.Windows1250.NewEncoder()
out, _ := enc.String(inp)
return out
}
Edit: undefined: ba
ma zastąpić enc
- 1. Jak konwertować znaki UTF8 na znaki liczbowe w PHP
- 2. W jaki sposób działają powiązania języka GUI?
- 3. Przejdź do zasobów edukacyjnych
- 4. W języku Python, w jaki sposób konwertować wszystkie elementy na liście do pływaków?
- 5. W jaki sposób mam tekst przeniknąć do UILabel?
- 6. W SQL w jaki sposób mogę konwertować typ danych pieniężnego na dziesiętny?
- 7. W jaki sposób zaimplementowano metodę String # # języka Java?
- 8. Notepad ++ Przejdź do definicji
- 9. konwertować QVideoFrame do QImage
- 10. MySQL - Konwersja znaków latin1 na stole UTF8 w UTF8
- 11. Przejdź do treści
- 12. javascript: W jaki sposób obrócić tekst za pomocą javascript?
- 13. Przejdź do definicji na typie betonu
- 14. właściwy sposób konwertować JSON Data do .NET DateTime Podczas deserializacjia
- 15. W JavaScript, w jaki sposób mogę zamienić tekst na stronie HTML bez wpływu na znaczniki?
- 16. ANTLR Jaki jest najprostszy sposób realizacji języka Pythona?
- 17. W jaki sposób OS X ładuje aplikację opartą na scenorysach i w jaki sposób zarządza oknami?
- 18. W jaki sposób Hierarchia Chomsky'ego i maszyny Turinga wpływają na projektowanie języka?
- 19. JSON konwertować do XLS w Pythonie
- 20. Czy istnieje sposób konwersji z UTF8 na iso-8859-1?
- 21. Przejdź do n-tego symbolu w linii
- 22. Jaki jest najlepszy sposób uzyskania ostatniego wstawionego identyfikatora przy użyciu języka sqlite z języka Java?
- 23. Jak konwertować ułamki dziesiętne na ułamki szesnastkowe?
- 24. jak konwertować bool do int8 w golang
- 25. Python konwersja latin1 na UTF8
- 26. Konwertuj ciąg łaciński1 na utf8?
- 27. jak konwertować obiekt na ciąg w php
- 28. Howto do SQL Server utf8?
- 29. Konwertuj ciąg/Tekst na tablicę bajtów w skrypcie typu
- 30. W jaki sposób korzystasz z mowy Androida na tekst w czasie rzeczywistym?
co jest "ANSI"? – newacct
ANSI? Co to jest, 1982? –
@newacct [ASCII Nie mylić z Windows-1252, znany również jako "ANSI"] (http://en.wikipedia.org/wiki/ASCII). –