Golang が文字化けしたファイルを書き込む

王林
リリース: 2023-05-15 11:56:37
オリジナル
1009 人が閲覧しました

golang を使用してファイルを書き込むと、ファイルの内容が文字化けすることがあります。これは、golang がデフォルトで UTF-8 エンコーディングを使用してファイルを書き込むためです。それ以外のエンコーディングでファイルを書き込むと文字化けが発生します。

それでは、golang で書かれたファイルが文字化けする問題を回避するにはどうすればよいでしょうか?解決策は次のとおりです。

  1. UTF-8 エンコードを使用する

文字化けを回避したい場合、最も簡単な方法は UTF-8 エンコードを使用することです。 golang では、次のコードを使用してファイルを書き込むときにエンコードを設定できます。

file, err := os.Create("test.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

file.WriteString("") // 写入UTF-8的BOM字符

writer := bufio.NewWriter(file)
encoder := unicode.UTF8.NewEncoder()
writer = transform.NewWriter(writer, encoder)

_, err = writer.WriteString("这是一段中文文本")
if err != nil {
    log.Fatal(err)
}
ログイン後にコピー

このコードでは、BOM 文字を使用して、ファイルが UTF-8 エンコードを使用していることを示します。書き込みストリームで UTF8 エンコーダ エンコーダとコンバータ変換を使用して、書き込まれたテキストが UTF-8 でエンコードされていることを確認します。

  1. 指定されたエンコードを使用する

UTF-8 エンコードの使用に加えて、golang は他の多くのエンコードもサポートしています。エンコーディング/ピンイン パッケージを使用して、テキストを GBK や Big5 などの特定のエンコーディングに変換できます。

以下は、GBK エンコードを使用してテキストをファイルに書き込むサンプル コードです。

file, err := os.Create("test.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

writer := bufio.NewWriter(file)
encoder := simplifiedchinese.GBK.NewEncoder()
writer = transform.NewWriter(writer, encoder)

_, err = writer.WriteString("这是一段中文文本")
if err != nil {
    log.Fatal(err)
}
ログイン後にコピー

このコードは、simplifiedchinese.GBK.NewEncoder() を使用して、書き込まれたテキストをエンコードします。必要に応じて、他のエンコード形式を選択できます。

  1. サードパーティ ライブラリを使用する

golang の標準ライブラリを使用してファイルを作成することに加えて、github.com/axgle などのサードパーティ ライブラリを使用することもできます。 /mahonia. 文字化けの問題を解決します。

以下は、mahonia ライブラリを使用してテキストをファイルに書き込むサンプル コードです。

import (
    "github.com/axgle/mahonia"
)

file, err := os.Create("test.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

writer := bufio.NewWriter(file)
enc := mahonia.NewEncoder("gbk")
writer.WriteString(enc.ConvertString("这是一段中文文本"))
writer.Flush()
ログイン後にコピー

このコードは、mahonia.NewEncoder("gbk") を使用して、書き込まれたテキストをエンコードします。

概要

golang でファイルを記述するときに文字化けを回避する最善の方法は、コードを記述するときに正しいエンコード形式を指定することです。デフォルトでは UTF-8 エンコーディングが使用されます。他のエンコード形式を使用したい場合は、エンコーダーまたはサードパーティのライブラリを使用できます。

以上がGolang が文字化けしたファイルを書き込むの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート