検索

Go 言語は、効率性、同時実行性、移植性を備えた最新のプログラミング言語です。実際のアプリケーションでは、多くの場合、異なるエンコーディング間の変換の問題に対処する必要があります。この記事では、golang でのエンコード変換ソリューションを紹介します。

  1. エンコーディングの基礎知識

コンピューターでは、文字は多くの場合、ASCII コード、GB2312、UTF-8 などのデジタル エンコーディングとして表現されます。異なるエンコーディング間の文字マッピング関係は異なり、それがそれぞれの欠点と利点にもつながります。

ASCII コードは一般的に使用されるエンコード方式ですが、大文字、小文字、数字、一部の特殊文字を含む 128 文字しか表現できないため、国際化への適用が制限されます。 GB2312 は、約 7,000 の漢字を表現できる漢字エンコード方式ですが、普及しているのは中国国内のみです。同様に、UTF-8 エンコードも一般的に使用されるエンコード方式で、世界中の文字を表現できますが、東アジア言語を扱う場合、GB2312 や GB18030 に比べてバイト数が多くなるという欠点があります。

したがって、対応するシナリオで使用するには、異なるエンコーディング間で変換する必要があります。

  1. golang でのエンコーディング変換

Golang の標準ライブラリは、エンコーディングと Unicode パッケージを提供します。これらは、エンコーディング関連の問題と Unicode コード ポイント関連の問題にそれぞれ対処するために使用されます。質問。

golang では、文字はルーン タイプとして表現され、文字列は一連のルーン タイプで構成されます。 golangでよく使われるエンコード変換関数とその例を紹介します。

2.1 golang のエンコーディング変換関数

2.1.1 bytes パッケージ

bytes パッケージは、バイナリ データの読み取りと書き込みのためのいくつかの関数を提供します。その一部は解析に特化されています。そして文字列をシリアル化します。

関数名 function

func ToUpperSpecial 文字列を大文字に変換し、カスタム Locale をサポートします。

func ToLowerSpecial 文字列を小文字に変換し、カスタム Locale をサポートします

func ToTitleSpecial 文字列をタイトル形式に変換します。カスタム Locale をサポートします。

func ToUpper 文字列を大文字に変換します。

#func ToLower 文字列を小文字に変換します

func ToTitle 文字列をタイトルに変換しますformat

func Title 文字列全体をタイトルに変換します format

func TrimSpace 文字列の先頭と末尾のスペースを削除します

func Trim 文字を削除します 先頭の指定文字

func TrimFunc 文字列の先頭と末尾にある指定された関数を削除します。

func TrimLeftFunc 文字列

の左側にある指定された関数を削除します。 func TrimRightFunc 文字列の右側にある指定された関数を削除します。

func HasPrefix 文字列に指定されたプレフィックスが含まれるかどうかを判断します。

func HasSuffix 文字列に指定されたサフィックスが含まれるかどうかを判断します。

func Index 文字列内で指定された部分文字列が最初に出現する位置を返します。 Position

func LastIndex 文字列内で指定された部分文字列が最後に出現する位置を返します。

func IndexFunc文字列内で指定された条件を満たす文字が最初に出現する

func LastIndexFunc 文字列内で指定された条件を満たす文字が最後に出現する位置を返します

func IndexByte 位置を返します文字列内で指定された文字が最初に出現する回数

func LastIndexByte 文字列内で最後に出現した文字を返します。 指定された文字が出現する位置

func Count 文字列内で最初に出現した文字の回数を返します。指定された部分文字列が文字列内に出現します

func Replace 文字列内の指定された部分文字列を別の文字列に置き換えます

func ReplaceAll 文字列内のすべての指定された部分文字列を別の文字列に置き換えます

func Split指定された区切り文字に従って文字列をスライスに分割します

func SplitN 指定された区切り文字に従って文字列をスライスに分割します (最大 N 回)

func SplitAfter 指定された区切り文字に従って文字列をスライスに分割します接尾辞、接尾辞は各部分文字列に含まれます

func SplitAfterN 指定された接尾辞に従って文字列をスライスに分割します。接尾辞は各部分文字列に含まれ、最大 N 回分割されます

func Join 指定された区切り文字に従って、文字列スライスを 1 つの文字列に結合します。

##2.1.2 エンコード パッケージ

encoding パッケージは、次のようなさまざまな文字エンコード方法をエンコードおよびデコードするための一連の関数を提供します。 UTF-8、GB2312など

関数名 function

func Decode 指定されたエンコーディングのバイト スライスを UTF-8 形式のルーン スライスにデコードします。

func DecodeRune 指定されたエンコーディングのバイト スライスをデコードします。単一のルーンに変換

func DecodeLastRune 指定されたエンコーディングのバイト スライスから最後のルーンをデコードします

func Encode ルーン スライスを指定されたエンコーディングのバイト スライスに変換します

func RuneCount 計算 ルーン スライス内のルーンの数

func Runes 指定されたエンコード バイト スライスをルーン スライスにデコードします

2.1.3 unicode パッケージ

unicode パッケージは、次の機能を提供します。関数 文字が数字、文字などであるかどうかを判断するために使用されます。

関数名 Function

func IsDigit 文字が数字かどうかを判断します

func IsLetter 文字が文字かどうかを判断します

func IsLower 判斷字元是否為小寫字母

func IsUpper 判斷字元是否為大寫字母

func IsPunct 判斷字元是否為標點符號

func IsGraphic 判斷字元是否為可視圖形字元

2.2 golang中的編碼轉換範例

下面是一些golang中的編碼轉換範例:

2.2.1 UTF-8編碼轉換為GB2312

範例1:使用golang的encoding套件,在UTF-8編碼和GB2312編碼之間進行轉換。

package main

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

func main() {
    str := "你好,世界!"
    enc := mahonia.NewEncoder("GB2312")
    newStr := enc.ConvertString(str)
    fmt.Println(newStr)
}

2.2.2 GB2312編碼轉換為UTF-8

範例2:使用golang的encoding包,在GB2312編碼和UTF-8編碼之間進行轉換。

package main

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

func main() {
    str := "你好,世界!"
    dec := mahonia.NewDecoder("GB2312")
    newStr := dec.ConvertString(str)
    fmt.Println(newStr)
}
  1. 總結

在實際應用中,編碼轉換問題是一個常見的問題。本篇文章介紹了golang中的編碼轉換解決方案,主要透過encoding和unicode套件提供的函數來實現不同編碼之間的轉換。透過學習這些內容,對於在golang中進行編碼轉換的操作,我們應該有更深入的理解和更準確的實踐能力。

以上がgolang エンコード変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
GOインターフェイスでアサーションとタイプスイッチを入力しますGOインターフェイスでアサーションとタイプスイッチを入力しますMay 02, 2025 am 12:20 AM

gohandlesinterfacesandtypeassertionseffectivivivivivity、強化された柔軟性と耐毒性を強化します

エラーを使用し、エラーを使用して、goでエラー検査を行いますエラーを使用し、エラーを使用して、goでエラー検査を行いますMay 02, 2025 am 12:11 AM

言語エラー処理は、エラーとエラーを介してより柔軟になり、読みやすくなります。 1.エラーは、エラーが指定されたエラーと同じであり、エラーチェーンの処理に適しているかどうかを確認するために使用されます。 2.エラー。エラータイプを確認するだけでなく、エラーを特定のタイプに変換することもできます。これは、エラー情報を抽出するのに便利です。これらの関数を使用すると、エラー処理ロジックを簡素化できますが、エラーチェーンの正しい配信に注意を払い、コードの複雑さを防ぐために過度の依存性を回避できます。

GOのパフォーマンスチューニング:アプリケーションの最適化GOのパフォーマンスチューニング:アプリケーションの最適化May 02, 2025 am 12:06 AM

tomakegogoapplicationsRunfasterAndMore -efficient、useprofilingtools、leverageconconcurrency、andmanagememoryefcectively.1)useprofforcpuandmemoryprofilingtoidentififybottlenecks.2)

GOの未来:トレンドと開発GOの未来:トレンドと開発May 02, 2025 am 12:01 AM

go'sfutureisbrightwithtrendslikeRikeRovedTooling、generics、cloud-nativeadoption、performulenhancements、andwebassemblyintegration、butchallengesincludemaintainingsimplicitandimplovingeror handling。

Goroutinesの理解:Goの同時性に深く潜りますGoroutinesの理解:Goの同時性に深く潜りますMay 01, 2025 am 12:18 AM

GoroutinesAreSareSareSareSormethodSthaturncurlyntingo、Enableing and LightweightConcurrency.1)theyRuntimeSimeSingMultiplexing、SountyStorunonFeweroSthReads.2)ゴルチンズを失ったことを許可します

go:目的と使用法でのinit機能を理解するgo:目的と使用法でのinit機能を理解するMay 01, 2025 am 12:16 AM

initistoistoInitializevariables、setupconutupurations、orforformndexedarysetupbe foreThemainfunctionexecutes.useinitby:1)inginginyourcodeTorunautorunaintalunain、2)KeepingItshortandpocusedonsimpletasks、3)ConsididiriveSusinginsingingingingingingingingingingingingingingingingingingingingingingsingpltassksを使用すると、

GOインターフェイスの理解:包括的なガイドGOインターフェイスの理解:包括的なガイドMay 01, 2025 am 12:13 AM

go interfacesaremethodsignaturesetsetsattypesmustimplement、unableingpolymorphism withintinheritance forcleaner、modularcode.theyareimplictilistifisisfiestified、houseforfflexibleapisanddeaupling、busrecarefulusoavoidoidoimoidimeerrororsypertety。

GOのパニックからの回復:いつ、どのように使用するか()GOのパニックからの回復:いつ、どのように使用するか()May 01, 2025 am 12:04 AM

Goで回復()関数を使用して、パニックから回復します。特定の方法は次のとおりです。1)回復()を使用して、延期関数でパニックをキャプチャして、プログラムのクラッシュを避けます。 2)デバッグの詳細なエラー情報を記録します。 3)特定の状況に基づいてプログラムの実行を再開するかどうかを決定します。 4)パフォーマンスに影響を及ぼさないように注意して使用します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール