Golang が中国語の文字化けを傍受する

PHPz
リリース: 2023-05-15 10:06:07
オリジナル
1174 人が閲覧しました

Golang を使用して文字列をインターセプトすると、中国語の文字をインターセプトし、出力が文字化けするという問題が発生する可能性があります。この現象は、中国語の文字エンコードの問題が原因で発生します。

Golang は文字を表すために UTF-8 エンコーディングを使用し、UTF-8 エンコーディングでは中国語の文字は 3 バイトで構成されます。したがって、エンコードの問題に注意を払わないと、文字化けした出力や不完全な文字列のインターセプトなど、文字列をインターセプトするときに予期しない問題が発生する可能性があります。

中国語の文字化けをインターセプトする問題を解決するいくつかの方法を次に示します。

方法 1: ルーンを使用する

Golang のルーンは Unicode 文字を表します。中国語の文字をインターセプトしたい場合は、まず文字列をルーン タイプに変換し、次に必要な文字をインターセプトし、最後にルーン タイプを文字列に変換します。

サンプル コード:

package main

import (
    "fmt"
)

func main() {
    str := "Go语言中文网"
    strRune := []rune(str)
    fmt.Println(string(strRune[0:2]))
}
ログイン後にコピー

出力結果は次のとおりです: Go

上記のコードは、まず文字列 str を rune タイプに変換し、次に文字列スライスを使用して最初の 2 つをインターセプトします。文字を入力し、最後にルーンの種類を文字列出力に変換します。漢字 1 文字は 3 バイトを占めるため、インターセプトするときに正しい範囲を選択しないと文字化けが発生します。

方法 2: バイト数の代わりに中国語の文字長を使用する

Golang では 1 つの中国語の文字が 3 バイトを占めるため、中国語の文字をインターセプトするときに、中国語の文字の長さを標準として使用できます。 、バイト単位ではなく。この方法により、バイト数不足による文字化けの問題を回避できます。

サンプル コード:

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "Go语言中文网"
    var size int
    for i := range s {
        if size < 2 {
            size++
            continue
        }
        fmt.Println(s[0:i])
        break
    }
    fmt.Println("中文字符数量:", utf8.RuneCountInString(s))
}
ログイン後にコピー

出力結果は次のとおりです: Go 言語

このコードでは、最初に utf8 ライブラリの RuneCountInString() 関数を使用して、文字数を計算します。次に、中国語の文字の長さに応じて、適切な文字をスライスしてインターセプトします。

文字エンコーディングが異なるため、言語ごとに中国語の文字が占めるバイト数も異なる可能性があることに注意してください。そのため、特定の言語に応じて文字列をインターセプトする適切な方法を選択する必要があります。状況。

要約すると、ルーン文字の種類または中国語の文字の長さを使用して文字列をインターセプトすることができ、これにより中国語の文字化けの問題を効果的に回避できます。もちろん、実際のアプリケーションでは、最良の結果を得るために多くの状況を考慮する必要があります。

以上がGolang が中国語の文字化けを傍受するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!