首頁 >後端開發 >Golang >如何在 Go 中將文字從 Windows-1256 轉換為 UTF-8?

如何在 Go 中將文字從 Windows-1256 轉換為 UTF-8?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-29 16:43:18182瀏覽

How to Convert Text from Windows-1256 to UTF-8 in Go?

在 Go 中編碼文字

在處理文字資料時,通常需要在不同的編碼之間進行轉換。 UTF-8 是一種廣泛使用的編碼,能夠表示多種字元。

問題:如何將文字從 Windows-1256 阿拉伯語等編碼轉換為 UTF- Go 中的 8?

答案:

要執行此轉換,請利用 Go 中可用的編碼套件。此外,golang.org/x/text/encoding/charmap 套件提供了對各種編碼的支持,包括 Windows-1256。

範例:

以下程式碼片段示範如何將文字從日文 UTF-8 編碼為ShiftJIS,然後將其解碼回UTF-8:

package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "strings"

    "golang.org/x/text/encoding/japanese"
    "golang.org/x/text/transform"
)

func main() {
    // Input string
    s := "今日は"
    fmt.Println(s)

    // Encode: Convert s from UTF-8 to ShiftJIS
    var b bytes.Buffer
    wInUTF8 := transform.NewWriter(&b, japanese.ShiftJIS.NewEncoder())
    wInUTF8.Write([]byte(s))
    wInUTF8.Close()
    encodedBytes := b.Bytes()
    fmt.Printf("%#v\n", encodedBytes)
    encS := string(encodedBytes)
    fmt.Println(encS)

    // Decode: Convert encodedBytes from ShiftJIS to UTF-8
    rInUTF8 := transform.NewReader(strings.NewReader(encS), japanese.ShiftJIS.NewDecoder())
    decodedBytes, _ := ioutil.ReadAll(rInUTF8)
    decodedString := string(decodedBytes)
    fmt.Println(decodedString)
}

有關更全面的範例,請參閱以下連結:https://ja.stackoverflow.com/questions/6120。

以上是如何在 Go 中將文字從 Windows-1256 轉換為 UTF-8?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn