github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/unicode/utf8/utf8.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // パッケージutf8はUTF-8でエンコードされたテキストをサポートするための関数や定数を実装しています。ルーンとUTF-8バイトシーケンスの変換を行うための関数も含まれています。
     6  // 詳細はhttps://en.wikipedia.org/wiki/UTF-8を参照してください。
     7  package utf8
     8  
     9  // エンコーディングに基本的な数値。
    10  const (
    11  	RuneError = '\uFFFD'
    12  	RuneSelf  = 0x80
    13  	MaxRune   = '\U0010FFFF'
    14  	UTFMax    = 4
    15  )
    16  
    17  // FullRuneは、pのバイトがルーンの完全なUTF-8エンコードで始まるかどうかを報告します。
    18  // 無効なエンコーディングは完全なルーンと見なされるため、幅-1のエラールーンとして変換されます。
    19  func FullRune(p []byte) bool
    20  
    21  // FullRuneInString は FullRune と似ていますが、入力は文字列です。
    22  func FullRuneInString(s string) bool
    23  
    24  // DecodeRuneはpの最初のUTF-8エンコーディングを展開し、ルーンと
    25  // そのバイト幅を返します。もしpが空なら、([RuneError], 0)を返します。それ以外の場合、
    26  // エンコーディングが無効なら、(RuneError, 1)を返します。これらは正しい、空でないUTF-8に対しては
    27  // 不可能な結果です。
    28  //
    29  // エンコーディングが無効な場合は、それが不正なUTF-8である、範囲外のルーンをエンコードしている、
    30  // または値のための最短可能なUTF-8エンコーディングでない場合です。
    31  // それ以外の検証は行われません。
    32  func DecodeRune(p []byte) (r rune, size int)
    33  
    34  // DecodeRuneInStringは [DecodeRune] と同様ですが、入力は文字列です。もしsが
    35  // 空なら、([RuneError], 0)を返します。それ以外の場合、
    36  // エンコーディングが無効なら、(RuneError, 1)を返します。これらは正しい、空でない
    37  // UTF-8に対しては不可能な結果です。
    38  //
    39  // エンコーディングが無効な場合は、それが不正なUTF-8である、範囲外のルーンをエンコードしている、
    40  // または値のための最短可能なUTF-8エンコーディングでない場合です。
    41  // それ以外の検証は行われません。
    42  func DecodeRuneInString(s string) (r rune, size int)
    43  
    44  // DecodeLastRuneはpの最後のUTF-8エンコーディングを展開し、ルーンと
    45  // そのバイト幅を返します。もしpが空なら、([RuneError], 0)を返します。それ以外の場合、
    46  // エンコーディングが無効なら、(RuneError, 1)を返します。これらは正しい、空でないUTF-8に対しては
    47  // 不可能な結果です。
    48  //
    49  // エンコーディングが無効な場合は、それが不正なUTF-8である、範囲外のルーンをエンコードしている、
    50  // または値のための最短可能なUTF-8エンコーディングでない場合です。
    51  // それ以外の検証は行われません。
    52  func DecodeLastRune(p []byte) (r rune, size int)
    53  
    54  // DecodeLastRuneInStringは [DecodeLastRune] と同様ですが、入力は文字列です。もしsが
    55  // 空なら、([RuneError], 0)を返します。それ以外の場合、
    56  // エンコーディングが無効なら、(RuneError, 1)を返します。これらは正しい、空でない
    57  // UTF-8に対しては不可能な結果です。
    58  //
    59  // エンコーディングが無効な場合は、それが不正なUTF-8である、範囲外のルーンをエンコードしている、
    60  // または値のための最短可能なUTF-8エンコーディングでない場合です。
    61  // それ以外の検証は行われません。
    62  func DecodeLastRuneInString(s string) (r rune, size int)
    63  
    64  // RuneLenはルーンをUTF-8でエンコードするために必要なバイト数を返します。
    65  // ルーンがUTF-8でエンコードすることができない場合は、-1を返します。
    66  func RuneLen(r rune) int
    67  
    68  // EncodeRuneは、ルーンのUTF-8エンコーディングをpに書き込みます(これは十分に大きくなければなりません)。
    69  // もしルーンが範囲外であれば、[RuneError] のエンコーディングを書き込みます。
    70  // 書き込まれたバイト数を返します。
    71  func EncodeRune(p []byte, r rune) int
    72  
    73  // AppendRuneは、rのUTF-8エンコーディングをpの末尾に追加し、
    74  // 拡張されたバッファを返します。もしルーンが範囲外であれば、
    75  // [RuneError] のエンコーディングを追加します。
    76  func AppendRune(p []byte, r rune) []byte
    77  
    78  // RuneCount は p 内のルーンの数を返します。間違ったエンコーディングや短いエンコーディングは、1バイトの幅を持つ単一のルーンとして扱われます。
    79  func RuneCount(p []byte) int
    80  
    81  // RuneCountInString is like [RuneCount] but its input is a string.
    82  func RuneCountInString(s string) (n int)
    83  
    84  // RuneStartは、バイトが符号化された(おそらく無効な)ルーンの最初のバイトであるかどうかを報告します。2番目以降のバイトは常に上位2ビットが10に設定されます。
    85  func RuneStart(b byte) bool
    86  
    87  // Validは、pが完全に有効なUTF-8エンコードされたルーンで構成されているかどうかを示します。
    88  func Valid(p []byte) bool
    89  
    90  // ValidStringは、sが完全に有効なUTF-8エンコードされたルーンで構成されているかどうかを報告します。
    91  func ValidString(s string) bool
    92  
    93  // ValidRuneは、rがUTF-8として正当にエンコードされるかどうかを報告します。
    94  // 範囲外のコードポイントやサロゲートペアの半分は不正です。
    95  func ValidRune(r rune) bool