## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > encoding

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    encoding — 符号系の操作 Manipulate encodings
  構文 SYNOPSIS
  緒論 INTRODUCTION
  説明 DESCRIPTION
    encoding convertfrom ?encoding? data
    encoding convertfrom ?-profile profile? ?-failindex var? encoding data
    encoding convertto ?encoding? data
    encoding convertto ?-profile profile? ?-failindex var? encoding data
    encoding dirs ?directoryList?
    encoding names
    encoding profiles
    encoding system ?encoding?
    encoding user
  PROFILES
    strict
    tcl8
    replace
  EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

encoding — 符号系の操作 Manipulate encodings

### 構文 SYNOPSIS

encoding option ?arg arg ...?

### 緒論 INTRODUCTION

Tcl内の文字列は､論理的にユニコード文字列の並びである｡これらの文字列は､記憶域内の､バイト並びとして表示され､幾つかの符号系の内の一つになっている：修正 UTF-8 (文字毎に1から4バイト使う)又は､8ビット二進データとして始まる符号系｡ Strings in Tcl are logically a sequence of Unicode characters. These strings are represented in memory as a sequence of bytes that may be in one of several encodings: modified UTF-8 (which uses 1 to 4 bytes per character), or a custom encoding start as 8 bit binary data.

種々のOSシステム対話機能や応用譜はシフトJISの様な別の符号系の文字列を生成する事もある｡この encoding 命令は､ユニコードと､他の形式との隙間の橋渡しを手助けする｡ 　　　 Different operating system interfaces or applications may generate strings in other encodings such as Shift-JIS. The encoding command helps to bridge the gap between Unicode and these other formats.

### 説明 DESCRIPTION

指示項目 に従って幾つかの符号系に関する操作のどれかを遂行する｡有効な指示項目は以下の通り: 　　　 Performs one of several encoding related operations, depending on option. The legal options are:

encoding convertfrom ?encoding? data

encoding convertfrom ?-profile profile? ?-failindex var? encoding data
  二進文字列であろうdataをencoding経由でTcl文字列に変換する｡もし､encodingが指定されない場合､現在の系に符号系が使われる｡ Converts data, which should be in binary string encoded as per encoding, to a Tcl string. If encoding is not specified, the current system encoding is used.

-profile指示項目は変換不都合の存在下での命令の振舞を定める｡詳細は下のPROFILES節を参照されたい｡もし､-failindex指示項目が指定されてない場合､不都合に基く､どの様な早過ぎる処理の終了も､例外を経由して､報告される｡ The -profile option determines the command behavior in the presence of conversion errors. See the PROFILES section below for details. Any premature termination of processing due to errors is reported through an exception if the -failindex option is not specified.

もし､-failindexが指定されている場合､早過ぎる処理の終了に基づいて惹き起される例外の代りに､命令の結果として､不都合の位置迄の変換の結果が､返される｡更に､不都合を誘発する原資のバイトの位置はvarに保存される｡もし､不都合に遭遇しなかった場合､変換の全部の結果が返され､且つ､var内に値-1が保存される｡ If the -failindex is specified, instead of an exception being raised on premature termination, the result of the conversion up to the point of the error is returned as the result of the command. In addition, the index of the source byte triggering the error is stored in var. If no errors are encountered, the entire result of the conversion is returned and the value -1 is stored in var.

encoding convertto ?encoding? data

encoding convertto ?-profile profile? ?-failindex var? encoding data
  stringを､指定されたencodingに変換する｡結果は､指定された符号系に変換された文字列を､表現するバイトの並びを含む､Tcl二進文字列である｡もし､encodingが指定されない場合､現在の系の符号系が使われる｡ Convert string to the specified encoding. The result is a Tcl binary string that contains the sequence of bytes representing the converted string in the specified encoding. If encoding is not specified, the current system encoding is used.

-profileと-failindex指示項目は､encoding convertfrom命令について記述されたのと同じ効果を有する｡ The -profile and -failindex options have the same effect as described for the encoding convertfrom command.

encoding dirs ?directoryList?
  Tcl は､使って動作する為に､追加的な符号系を記述した符号体系データ・ファイルを､ファイルシステムから積み込むことができる｡この命令は､ *.enc の符号体系データ・ファイルの為の捜索経路をディレクトリーのリスト directoryList に設定する｡もし､ directoryList が省略されると､この命令は捜索経路を作り上げた現在のディレクトリーのリストを返す｡ directoryList が適切なリストでないと不具合になる｡符号体系データ・ファイルの捜索が生じたとき､ directoryList の要素が捜索可能なディレクトリーの読出し可能のものを参照してないと､その要素は無視される｡ 　　　 Tcl can load encoding data files from the file system that describe additional encodings for it to work with. This command sets the search path for *.enc encoding data files to the list of directories directoryList. If directoryList is omitted then the command returns the current list of directories that make up the search path. It is an error for directoryList to not be a valid list. If, when a search for an encoding data file is happening, an element in directoryList does not refer to a readable, searchable directory, that element is ignored.

encoding names
  現在利用できる全ての符号系の名前を含むリストを返す｡そのリストに符号系 “utf-8” と “iso8859-1” がある事は保障されている｡ 　　 Returns a list containing the names of all of the encodings that are currently available. The encodings “utf-8” and “iso8859-1” are guaranteed to be present in the list.

encoding profiles
  符号系輪郭のリストを返す｡下のPROFILESを参照されたい｡ Returns a list of the names of encoding profiles. See PROFILES below.

encoding system ?encoding?
  システムの符号系を encoding に設定する｡もし､ encoding が省略されると､この命令は､現在のシステムの符号系を返す｡Tcl が文字列をシステム呼出に渡すときは､何時もそのシステム符号系が使用される｡ 　　　 Set the system encoding to encoding. If encoding is omitted then the command returns the current system encoding. The system encoding is used whenever Tcl passes strings to system calls.

encoding user
  符号系の名前を使用者の好みに従って返す｡Windows系では､レジストリー内に設定している使用者符号頁に拠る｡他のOSでは､返される値は､encoding system によるものと同じである｡ Returns the name of encoding as per the user's preferences. On Windows systems, this is based on the user's code page settings in the registry. On other platforms, the returned value is the same as returned by encoding system.

### PROFILES

符号系変換を含む操作は､原資データ内の不適切な並びや､目標の符号系に符号化できない等の､幾つかの型の不都合に遭遇し得る｡profileは､その様な不都合を取り扱う為の戦略を､二つの方法の内の一つで､予め記述する: Operations involving encoding transforms may encounter several types of errors such as invalid sequences in the source data, characters that cannot be encoded in the target encoding and so on. A profile prescribes the strategy for dealing with such errors in one of two ways:

- 原資データの更なる処理を終了する｡輪郭は､呼出側に､如何にこの早期終了が伝えられるかは定めない｡無為設定では､これは例外の発動で伝わる｡もし､-failindex指示項目が指定されている場合､不都合はその機構を経由して報告される｡ Terminating further processing of the source data. The profile does not determine how this premature termination is conveyed to the caller. By default, this is signalled by raising an exception. If the -failindex option is specified, errors are reported through that mechanism.

- 原資の処理を､輪郭が定めた方法を使って､障害を起こすバイトを置換えや除去する様な､代替手段を使って､更なる処理を続ける｡ Continue further processing of the source data using a fallback strategy such as replacing or discarding the offending bytes in a profile-defined manner.

現在の処､次の輪郭が実装され､もし､-profileが指定されてない場合､strictが無為設定である｡ The following profiles are currently implemented with strict being the default if the -profile is not specified.

strict
  strict輪郭は､変換不都合に遭遇した時､常に処理を停止する｡不都合は､例外､又は､-failindex指示項目機構を経由して伝えられる｡strict輪郭はユニコード標準適合行動を実装する｡ The strict profile always stops processing when an conversion error is encountered. The error is signalled via an exception or the -failindex option mechanism. The strict profile implements a Unicode standard conformant behavior.

tcl8
  tcl8輪郭は常に上述の第一戦略に従う､且つ､Tcl 8.6の符号化変換の行動に合致する｡utf-8以外の外部符号系から､Tcl文字列にencoding convertfrom命令によって､変換する時､ 不適切なバイトは､数的に等価な符号位置に対応付けされる｡譬えば､ASCIIで不適切なバイト0x80は､符号位置U+0080に､対応付けされる｡Butf-8から変換する時､CP1252で定義された不適切バイトは､そのユニコード等価に対応付けされ､その際､数的等価には戻されない｡譬えば､バイト0x80はCP1252によって定義され､従って､そのユニコード等価のU+20ACに対応付けされるが､CP1252に定義されないバイト0x81がU+0081に対応点けされてしまう｡更なる特殊な場合として､並び0xC0 0x80がU+0000に対応付けされる｡ encoding converttoを使って､Tcl文字列から外部符号系形式に変換する時､目標符号系で表現できない文字は､符号系依存の文字､通常は疑問符?､に置換される｡ The tcl8 profile always follows the first strategy above and corresponds to the behavior of encoding transforms in Tcl 8.6. When converting from an external encoding other than utf-8 to Tcl strings with the encoding convertfrom command, invalid bytes are mapped to their numerically equivalent code points. For example, the byte 0x80 which is invalid in ASCII would be mapped to code point U+0080. When converting from utf-8, invalid bytes that are defined in CP1252 are mapped to their Unicode equivalents while those that are not fall back to the numerical equivalents. For example, byte 0x80 is defined by CP1252 and is therefore mapped to its Unicode equivalent U+20AC while byte 0x81 which is not defined by CP1252 is mapped to U+0081. As an additional special case, the sequence 0xC0 0x80 is mapped to U+0000. When converting from Tcl strings to an external encoding format using encoding convertto, characters that cannot be represented in the target encoding are replaced by an encoding-dependent character, usually the question mark ?.

replace
  tcl8輪郭に似て､replace輪郭は､常に､変換不都合で処理を続けるが､不適合な原資データの置換の為の､ユニコード標準適合手段､に従う｡ encoding convertfromを使って､符号化されたバイト並びをTcl文字列に変換する時､不適正なバイトは､ U+FFFD 置換文字の符号位置によって置換される｡ encoding converttoを使ってTcl文字列を符号化する時､目標符号系で表現できない符号位置は､符号化-特化の懐中準備文字､即ち､UTF目標に就いてはU+FFFD置換文字､他の符号系に就いては一般に`?`､に変換される｡ Like the tcl8 profile, the replace profile always continues processing on conversion errors but follows a Unicode standard conformant method for substitution of invalid source data. When converting an encoded byte sequence to a Tcl string using encoding convertfrom, invalid bytes are replaced by the U+FFFD REPLACEMENT CHARACTER code point. When encoding a Tcl string with encoding convertto, code points that cannot be represented in the target encoding are transformed to an encoding-specific fallback character, U+FFFD REPLACEMENT CHARACTER for UTF targets and generally `?` for other encodings.

### EXAMPLES

これらの用例はTcl文字列から構成されるユニコード符号点を印刷する下の､汎用設備系手続き函数を使う｡ These examples use the utility proc below that prints the Unicode code points comprising a Tcl string.

    proc codepoints s {join [lmap c [split $s {}] {
        string cat U+ [format %.6X [scan $c %c]]}]
    }

用例1: 日本語euc-jp符号系からTCL文字列に変換する: Example 1: convert a byte sequence in Japanese euc-jp encoding to a TCL string:

    % codepoints [encoding convertfrom euc-jp "\xA4\xCF"]
    U+00306F

結果はユニコード 符号点 “\u306F” それは平仮名の「は」｡ The result is the unicode codepoint “\u306F”, which is the Hiragana letter HA.

用例 2: 輪郭に基いた不都合取扱い: Example 2: Error handling based on profiles:

文字Aはユニコード文字 U+0041 であり､バイト"\x80"は不適切なASCII符号である｡ The letter A is Unicode character U+0041 and the byte "\x80" is invalid in ASCII encoding.

    % codepoints [encoding convertfrom -profile tcl8 ascii A\x80]
    U+000041 U+000080
    % codepoints [encoding convertfrom -profile replace ascii A\x80]
    U+000041 U+00FFFD
    % codepoints [encoding convertfrom -profile strict ascii A\x80]
    unexpected byte sequence starting at index 1: '\x80'

用例 3: 部分的なデータと不都合位置を得る: 　 Example 3: Get partial data and the error location:

    % codepoints [encoding convertfrom -profile strict -failindex idx ascii AB\x80]
    U+000041 U+000042
    % set idx
    2

用例 4: ISO8859-1 で表現できない文字を符号化する: Example 4: Encode a character that is not representable in ISO8859-1:

    % encoding convertto iso8859-1 A\u0141
    A?
    % encoding convertto -profile strict iso8859-1 A\u0141
    unexpected character at index 1: 'U+000141'
    % encoding convertto -profile strict -failindex idx iso8859-1 A\u0141
    A
    % set idx
    1

### SEE ALSO

Tcl_GetEncoding, fconfigure

### KEYWORDS

encoding, unicode
Copyright © 1998 Scriptics Corporation.