Golang は、近年人気が高まっているプログラミング言語の 1 つで、効率性、セキュリティ、シンプルさという利点があり、多くのエンジニアに選ばれています。しかし、漢字の処理という点では、Golang の経験は他のプログラミング言語に比べて若干不十分です。したがって、Golang での中国語のトランスコーディングも注意が必要な領域です。
1. Golang 文字列タイプ
Golang 中国語トランスコーディングについて話す前に、まず Golang の基本的な文字列タイプについて話しましょう。 Golang の文字列型は、順序付けされた不変のバイト シーケンスであり、その下で UTF-8 エンコーディングが使用されます。 Golang では、文字列は二重引用符 " " で定義され、バックスラッシュ "\" はエスケープ文字として使用できます。これが "\"r" に変更された場合はキャリッジ リターンを意味し、" に変更された場合はキャリッジ リターンを意味します。 \"n"は改行を示します。
簡単な例を見てみましょう:
package main import "fmt" func main() { s := "hello world" fmt.Println(s[1:4]) // 输出ell fmt.Println(len(s)) // 输出11 fmt.Println(s + " zen") // 输出hello world zen }
上の例では、s
という名前の文字列を宣言し、fmt を使用します。
パッケージの ## 関数は、s
に添え字 1 ~ 3 を付けた部分文字列を出力し、その結果に文字列長と s
を加算した結果を「zen」とします。 Golang 文字列は不変であり、その文字は直接変更をサポートしていないことに注意してください。変更は、文字列をバイト配列に変換してから配列内の要素を変更するか、新しい文字列を作成することによってのみ行うことができます。スプライスなどの操作を行います。 2. 中国語のエンコーディングの問題
Golang の中国語トランスコーディングについて話す前に、中国語のエンコーディングの問題も理解する必要があります。中国語のエンコードの問題は主に ANSI エンコードと UNICODE エンコードに分けられ、通常は UNICODE エンコードを使用します。 UNICODE エンコーディング システムでは、漢字のエンコーディングは 0x4E00 から始まり、UNICODE ではその番号で表されます。ただし、プログラミング言語が異なると、漢字のエンコード表現が若干異なる場合があるため、特に注意する必要があります。
3. Golang での漢字操作
漢字を扱う場合、最初に解決しなければならない問題は、文字列内の漢字の処理です。 Golang では、中国語の文字は UTF-8 でエンコードされた文字のカテゴリに分類されるため、UTF-8 でエンコードされた文字列を操作することで中国語の文字を処理できます。以下にいくつかの例を示します。
1.UTF-8 でエンコードされた中国語文字列出力:
package main import "fmt" func main() { s := "你好,世界!" //打印中文的字符串 fmt.Println(s) }
上記の例では、
s という名前のファイルを宣言しました。漢字、および fmt
の Println
関数では、これらの漢字は正常に出力されます。 2.UTF-8 エンコードされた文字列の長さ:
package main import ( "fmt" "unicode/utf8" ) func main() { s := "你好,世界!" fmt.Println(utf8.RuneCountInString(s)) // 输出11 }
上の例では、
utf8.RuneCountInString 関数を使用して文字列 s を取得しました。
の文字列。各中国語文字は 1 文字として扱われます。 3.UTF-8 エンコードされた文字列のスライス:
package main import ( "fmt" "unicode/utf8" ) func main() { s := "你好,世界!" runeS := []rune(s) // 将字符串转为rune序列 fmt.Println(string(runeS[0:3])) // 输出 "你好" fmt.Println(utf8.RuneCountInString(s)) // 输出13 }
上記の例では、まず
[]rune を使用して文字列 s
ルーンのシーケンスに変換し、サブシーケンスを選択して、出力用の文字列に変換します。 4. Golang 中国語トランスコーディング
Golang では、中国語トランスコーディングの最も一般的な要件の 1 つは、文字列内の中国語の文字をピンインに変換することです。
github.com/mozillazg/go-pinyin パッケージを使用して、この要件に対処できます。以下に例を示します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">package main
import (
"fmt"
"github.com/mozillazg/go-pinyin/pinyin"
)
func main() {
str := "中国"
py := pinyin.NewArgs()
fmt.Println(pinyin.Pinyin(str, py)) // 输出 [[zhong] [guo]]
fmt.Println(pinyin.Convert(str, py)) // 输出 zhong-guo
fmt.Println(pinyin.LazyPinyin(str, py)) // 输出 [zhong guo]
fmt.Println(pinyin.Pinyin(strings.ToUpper(str), py)) // 输出 [[ZHONG] [GUO]]
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
上の例では、
パッケージを使用して中国語の文字列をピンインに変換しました。 Pinyin
関数は中国語の文字をピンインの 2 次元配列に変換し、その戻り結果は複数の文字列配列で構成されるスライスになります。Convert
関数はすべての中国語の文字を変換します。 Pinyin に変換し、文字列形式で Pinyin を返します。LazyPinyin
関数は、中国語の文字を Pinyin に変換することもできますが、返される結果は文字列配列です。strings.ToUpper
関数が使用されます。元の文字列を変換します。大文字にします。 5. まとめ
Golang での漢字の処理には特別な注意が必要であり、これは Golang の開発プロセスでも注意が必要な領域です。 Golang の基本的な文字列タイプといくつかの特定の処理パッケージを通じて、中国語文字列の変換や出力などの操作を完了できます。エンジニアリングの実践では、特定のニーズに基づいて適切なソリューションを選択する必要もあります。
以上がgolang 中国語トランスコーディングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。