ansiテキストをgolangのutf8に変換するにはどうすればいいですか? ansi文字列をutf8文字列に変換しようとしています。ansiテキストをutf8に変換するにはどうすればいいですか?
6
A
答えて
6
Goには、UTF-8文字列しかありません。あなたは[]のバイトから、ここで説明した変換を使用してUTF8文字列に何かを変換することができます:
2
変換を自分で書いたり、サードパーティのパッケージを使用せずにそれを行うための方法はありません。これを使ってみることができます:http://code.google.com/p/go-charset
3
私は役に立つかもしれない関数を書いていますが、他の誰かがこれを使うことができます。 Windows-1252
からUTF-8
に変換されます。私は文字としていくつかのコード・ポイントWindows-1252
お菓子を変換しましたが、Unicodeの制御文字(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())
}
3
ここでは、新しい方法であると考えています。
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)
}
私は使用のiconv-行く、そのような変換を行うにして、あなたのANSIコードページが何を知っている必要があり、私の場合、それは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]))
}
0
golang.org/x/text/encoding/charmap
パッケージは、まさにこの問題のための機能を備えてい
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
}
編集:undefined: ba
はenc
関連する問題
- 1. ANSIファイルのテキストをnode.jsのUTF8に変換するFyle System
- 2. utf8ページにWindows-1252(ansi)を表示するにはどうすればよいですか?
- 3. オーディオをテキストに変換するにはどうすればよいですか?
- 4. Delphi 2010:UTF8でエンコードされたPAnsiCharをUnicodeStringに変換するにはどうすればよいですか?
- 5. latin1テーブルをシリアル化された値でutf8に変換するにはどうすればよいですか?
- 6. ANSI文字(char)からUnicode文字(wchar_t)に変換するにはどうすればよいですか?
- 7. Kotlin内でwin1251エンコーディングをUTF8に変換するにはどうすればよいですか?
- 8. UCS2文字列をUTF8に変換するにはどうすればよいですか?
- 9. utf8 db内のansi blobデータをutf8文字セットに変換する
- 10. utf8オープンプラグマ(またはファイルハンドルの変換)を検出するにはどうすればよいですか?
- 11. URLをcodeigniterに変換するにはどうすればいいですか?
- 12. TCHARをintに変換するにはどうすればいいですか
- 13. ifstreamをistreamに変換するにはどうすればいいですか
- 14. DFAをチューリングマシンに変換するにはどうすればいいですか?
- 15. FlowDocumentをPDFに変換するにはどうすればいいですか
- 16. bigintをdatetimeに変換するにはどうすればいいですか?
- 17. Some( "")をNoneに変換するにはどうすればいいですか?
- 18. UIWebViewをビットマップに変換するにはどうすればいいですか?
- 19. Tesseractライブラリを使ってイメージをphpのテキストに変換するにはどうすればいいですか?
- 20. テキストを日付に変換し、年の値を取得するにはどうすればいいですか?
- 21. プロパティシートのテキストを変更するにはどうすればいいですか?
- 22. DataTablesのテキストを変更するにはどうすればいいですか?
- 23. jqueryでCSSを変換するにはどうすればいいですか?
- 24. UnicodeテキストをAnsiテキストに変換するバッチファイル
- 25. Xamarin.Formsでコンバータを使用してテキストをカラーに変換するにはどうすればよいですか?
- 26. 選択したテキストをウェブページからHTMLタグに変換するにはどうすればよいですか?
- 27. Javascriptでテキストを変更するにはどうすればよいですか?
- 28. Excelは12時間(テキスト値)を10進数に変換するにはどうすればよいですか?
- 29. React-Nativeでテキストを音声に変換するにはどうすればよいですか?
- 30. Lucene.Net:MultiFiledQueryParserをBooleanQueryに変換するにはどうすればよいですか?
"ANSI" を何置き換えるのですか? – newacct
ANSI?これは1982年ですか? –
@newacct [ASCII]「ANSI」とも呼ばれるWindows-1252と混同しないでください(http://en.wikipedia.org/wiki/ASCII)。 –