## Tcl9.0.3/Tk9.0.3 Documentation > Tcl C API > 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
    Tcl_GetEncoding, Tcl_FreeEncoding, Tcl_GetEncodingFromObj, Tcl_ExternalToUtfDString, Tcl_ExternalToUtfDStringEx, Tcl_ExternalToUtf, Tcl_UtfToExternalDString, Tcl_UtfToExternalDStringEx, Tcl_UtfToExternal, Tcl_GetEncodingName, Tcl_SetSystemEncoding, Tcl_GetEncodingNameFromEnvironment, Tcl_GetEncodingNames, Tcl_CreateEncoding, Tcl_GetEncodingSearchPath, Tcl_SetEncodingSearchPath — 符号化の生成と使用のための手続函数　 procedures for creating and using encodings
  SYNOPSIS
    #include <tcl.h>
    Tcl_Encoding
    Tcl_GetEncoding(interp, name)
    Tcl_FreeEncoding(encoding)
    int
    Tcl_GetEncodingFromObj(interp, objPtr, encodingPtr)
    char *
    Tcl_ExternalToUtfDString(encoding, src, srcLen, dstPtr)
    int
    Tcl_ExternalToUtfDStringEx(interp, encoding, src, srcLen, flags, dstPtr, errorIdxPtr)
    char *
    Tcl_UtfToExternalDString(encoding, src, srcLen, dstPtr)
    int
    Tcl_UtfToExternalDStringEx(interp, encoding, src, srcLen, flags, dstPtr, errorIdxPtr)
    int
    Tcl_ExternalToUtf(interp, encoding, src, srcLen, flags, statePtr,
    dst, dstLen, srcReadPtr, dstWrotePtr, dstCharsPtr)
    int
    Tcl_UtfToExternal(interp, encoding, src, srcLen, flags, statePtr,
    dst, dstLen, srcReadPtr, dstWrotePtr, dstCharsPtr)
    const char *
    Tcl_GetEncodingName(encoding)
    Tcl_Size
    Tcl_GetEncodingNulLength(encoding)
    int
    Tcl_SetSystemEncoding(interp, name)
    const char *
    Tcl_GetEncodingNameFromEnvironment(bufPtr)
    Tcl_GetEncodingNames(interp)
    Tcl_Encoding
    Tcl_CreateEncoding(typePtr)
    Tcl_Obj *
    Tcl_GetEncodingSearchPath()
    int
    Tcl_SetEncodingSearchPath(searchPath)
  引数 ARGUMENTS
    Tcl_Interp *interp (入力in)
    const char *name (入力in)
    Tcl_Encoding encoding (入力in)
    Tcl_Obj *objPtr (入力in)
    Tcl_Encoding *encodingPtr (out)
    const char *src (入力in)
    const TCHAR *tsrc (入力in)
    Tcl_Size srcLen (in)
    Tcl_DString *dstPtr (出力out)
    int flags (入力in)
    Tcl_EncodingState *statePtr (入出力out/out)
    char *dst (出力out)
    int dstLen (入力in)
    int *srcReadPtr (出力out)
    int *dstWrotePtr (出力out)
    int *dstCharsPtr (出力out)
    Tcl_Size *errorIdxPtr (出力out)
    Tcl_DString *bufPtr (出力out)
    const Tcl_EncodingType *typePtr (in)
    Tcl_Obj *searchPath (入力in)
    const char *path (入力in)
  緒論 INTRODUCTION
  説明 DESCRIPTION
    TCL_OK
    TCL_CONVERT_NOSPACE
    TCL_CONVERT_MULTIBYTE
    TCL_CONVERT_SYNTAX
    TCL_CONVERT_UNKNOWN
  ENCODING FILES
  [1] S
  [2] D
  [3] M
  [4] E
  参照回数管理 REFERENCE COUNT MANAGEMENT
  PROFILES
  SEE ALSO
  KEYWORDS

### NAME

Tcl_GetEncoding, Tcl_FreeEncoding, Tcl_GetEncodingFromObj, Tcl_ExternalToUtfDString, Tcl_ExternalToUtfDStringEx, Tcl_ExternalToUtf, Tcl_UtfToExternalDString, Tcl_UtfToExternalDStringEx, Tcl_UtfToExternal, Tcl_GetEncodingName, Tcl_SetSystemEncoding, Tcl_GetEncodingNameFromEnvironment, Tcl_GetEncodingNames, Tcl_CreateEncoding, Tcl_GetEncodingSearchPath, Tcl_SetEncodingSearchPath — 符号化の生成と使用のための手続函数　 procedures for creating and using encodings

### SYNOPSIS

#include <tcl.h>
Tcl_Encoding
Tcl_GetEncoding(interp, name)
Tcl_FreeEncoding(encoding)
int
Tcl_GetEncodingFromObj(interp, objPtr, encodingPtr)
char *
Tcl_ExternalToUtfDString(encoding, src, srcLen, dstPtr)
int
Tcl_ExternalToUtfDStringEx(interp, encoding, src, srcLen, flags, dstPtr, errorIdxPtr)
char *
Tcl_UtfToExternalDString(encoding, src, srcLen, dstPtr)
int
Tcl_UtfToExternalDStringEx(interp, encoding, src, srcLen, flags, dstPtr, errorIdxPtr)
int
Tcl_ExternalToUtf(interp, encoding, src, srcLen, flags, statePtr,
`` dst, dstLen, srcReadPtr, dstWrotePtr, dstCharsPtr)
int
Tcl_UtfToExternal(interp, encoding, src, srcLen, flags, statePtr,
`` dst, dstLen, srcReadPtr, dstWrotePtr, dstCharsPtr)
const char *
Tcl_GetEncodingName(encoding)
Tcl_Size
Tcl_GetEncodingNulLength(encoding)
int
Tcl_SetSystemEncoding(interp, name)
const char *
Tcl_GetEncodingNameFromEnvironment(bufPtr)
Tcl_GetEncodingNames(interp)
Tcl_Encoding
Tcl_CreateEncoding(typePtr)
Tcl_Obj *
Tcl_GetEncodingSearchPath()
int
Tcl_SetEncodingSearchPath(searchPath)

### 引数 ARGUMENTS

Tcl_Interp *interp (入力in)
  不都合報告の為に使用する解釈実行機能､もし不都合報告を望まない場合は NULL｡ 　 Interpreter to use for error reporting, or NULL if no error reporting is desired.

const char *name (入力in)
  積込むべき符号化の名前｡ 　　 Name of encoding to load.

Tcl_Encoding encoding (入力in)
  文書の変換の為に問合せ､解放し､使用する符号化｡もし符号化encodingが NULL の場合､現在の系の符号化が使用される｡ The encoding to query, free, or use for converting text. If encoding is NULL, the current system encoding is used.

Tcl_Obj *objPtr (入力in)
  字句を得る為の符号化の名前｡　 Name of encoding to get token for.

Tcl_Encoding *encodingPtr (out)
  符号化字句が書かれる貯蔵を指す｡　 Points to storage where encoding token is to be written.

const char *src (入力in)
  Tcl_ExternalToUtf 函数に関して､指定された文字符号のバイト配列であり､この函数でUTF-8に変換される｡ Tcl_UtfToExternal 函数によって､指定された文字符号に変換されることになる､UTF-8文字列である｡　　　 For the Tcl_ExternalToUtf functions, an array of bytes in the specified encoding that are to be converted to UTF-8. For the Tcl_UtfToExternal function, an array of UTF-8 characters to be converted to the specified encoding.

const TCHAR *tsrc (入力in)
  UTF-8 に変換すべき Windows の TCHAR 文字の配列｡　　 An array of Windows TCHAR characters to convert to UTF-8.

Tcl_Size srcLen (in)
  src か tsrc のバイト単位の長さ｡もし長さが負数の場合､文字列の符号化固有の長さが使用される｡　 Length of src or tsrc in bytes. If the length is negative, the encoding-specific length of the string is used.

Tcl_DString *dstPtr (出力out)
  変換された結果が保存されることになる､初期化されない又は解放された Tcl_DString への指示子｡　 Pointer to an uninitialized or free Tcl_DString in which the converted result will be stored.

int flags (入力in)
  これは､符号化函数の操作を管理する為に渡された､ビットの覆面である｡ TCL_ENCODING_START は､以下の事を表明する､即ち､ 源資緩衝域が入力流れ(潜在的には複数区域)の最初の区域であり､変換業務譜に初期状態に刷新して最初のバイトが変換される前に生じることが必要などのような初期化も遂行するする様告げる｡ TCL_ENCODING_END は以下の事を表明する､即ち､源資緩衝域は入力流れ(潜在的には複数区域)の最後の区域であり､変換業務譜に､最終のバイトが変換された後に生じることが必要などのような終結作業も遂行して初期状態に刷新する様告げる｡ 下のPROFILES節内で定義されるTCL_PROFILE_*ビットは､符号化変換での､不適切なデータや他の不都合を伴う扱いの為に使われる符号化変換輪郭を､制御している｡TCL_ENCODING_STOPONERROR旗徴は効果が無く､Tcl 8.x内のみで意味がある｡ This is a bit mask passed in to control the operation of the encoding functions. TCL_ENCODING_START signifies that the source buffer is the first block in a (potentially multi-block) input stream, telling the conversion routine to reset to an initial state and perform any initialization that needs to occur before the first byte is converted. TCL_ENCODING_END signifies that the source buffer is the last block in a (potentially multi-block) input stream, telling the conversion routine to perform any finalization that needs to occur after the last byte is converted and then to reset to an initial state. The TCL_PROFILE_* bits defined in the PROFILES section below control the encoding profile to be used for dealing with invalid data or other errors in the encoding transform. The flag TCL_ENCODING_STOPONERROR has no effect, it only has meaning in Tcl 8.x.

幾つかの旗徴ビットは､下の函数記述内の註意と同じく幾つかの函数では使われないかもしれない｡ Some flags bits may not be usable with some functions as noted in the function descriptions below.

Tcl_EncodingState *statePtr (入出力out/out)
  一つづつの遣り方で(一般には長い､或いは無限長さの)バイト流れが変換される時に使われる｡変換業務譜は､源資が変換された後､その現在の状態を *statePtr 内に保存する(その緩衝域は現在の小片を含んでいる); その状態情報は流れの次の小片を変換している時､逆向きに渡さねばならない､それにより変換業務譜は最終の小片に於いて捨てられたときにどの様な常態かを知りえる｡NULL でもよい､その場合､旗印 flags によって指定された値は無視され､源資緩衝域は変換すべき完全な文字列が続いていると仮定される｡　 　 Used when converting a (generally long or indefinite length) byte stream in a piece-by-piece fashion. The conversion routine stores its current state in *statePtr after src (the buffer containing the current piece) has been converted; that state information must be passed back when converting the next piece of the stream so the conversion routine knows what state it was in when it left off at the end of the last piece. May be NULL, in which case the value specified for flags is ignored and the source buffer is assumed to contain the complete string to convert.

char *dst (出力out)
  変換された結果が保存される緩衝域｡ dstLen を超えるバイトは dst 内に保存されない｡　 Buffer in which the converted result will be stored. No more than dstLen bytes will be stored in dst.

int dstLen (入力in)
  出力緩衝域 dst のバイト単位の最大長さ｡　 The maximum length of the output buffer dst in bytes.

int *srcReadPtr (出力out)
  実際に変換された源資からバイトの個数を満たされる｡これは､何かの源資の文字の変換に問題があった場合､元の源資の長さより少ないかもしれない｡NULL でもよい｡　 Filled with the number of bytes from src that were actually converted. This may be less than the original source length if there was a problem converting some source characters. May be NULL.

int *dstWrotePtr (出力out)
  変換の結果として出力緩衝域内に実際に保存されているバイトの個数で満たす｡NULL でもよい｡　 Filled with the number of bytes that were actually stored in the output buffer as a result of the conversion. May be NULL.

int *dstCharsPtr (出力out)
  出力用緩衝域に保存されたバイト数に相当する文字の個数が入っている｡ NULLかもしれない｡ 　　　 Filled with the number of characters that correspond to the number of bytes stored in the output buffer. May be NULL.

Tcl_Size *errorIdxPtr (出力out)
  符号化変換が失敗することを惹き起す､バイトや文字の指示子で満たされる｡NULLもあり得る｡ Filled with the index of the byte or character that caused the encoding transform to fail. May be NULL.

Tcl_DString *bufPtr (出力out)
  予め記述されたシステム符号系名の為の保存域｡ 　　 Storage for the prescribed system encoding name.

const Tcl_EncodingType *typePtr (in)
  新しい型の符号系を定義する構造｡ 　　 Structure that defines a new type of encoding.

Tcl_Obj *searchPath (入力in)
  符号化データファイルの為に捜索すべきファイル系ディレクトリーのリスト｡ 　 List of filesystem directories in which to search for encoding data files.

const char *path (入力in)
  符号化ファイルの位置への経路｡ 　 A path to the location of the encoding file.

### 緒論 INTRODUCTION

これ等の業務は Tcl の内部文字表現､ UTF-8 種々のOSやファイル系で使用されている文字表現､譬えば､ユニコード､や ASCII や Shift-JIS の間の変換をする｡文字列上の操作､譬えばファイルの名前の取得､内部文字形状を使った文字の表示､の時に､文字列は種々の系で使用可能な一つかできれば多重の書式に変換される｡譬えば､日本語 Unix 装置上では使用者は EUC-JP ファイル符号系内のファイル名表現を得ようとし､ Tk 部品内にファイル名を表示する為に､文字を jisx0208 文字形状符号系に翻訳する｡この梱包の目的は翻訳の隙間の橋を補助することである｡ UTF-8 は種々の符号系に基く中間段階を提供する｡上記の例では､どの様なファイル符号系をOSが使用していても文書は UTF-8 に翻訳される｡次に､どの様な文字形状を表示譜が要求していても UTF-8 から､翻訳される｡ 　　　 These routines convert between Tcl's internal character representation, UTF-8, and character representations used by various operating systems or file systems, such as Unicode, ASCII, or Shift-JIS. When operating on strings, such as such as obtaining the names of files or displaying characters using international fonts, the strings must be translated into one or possibly multiple formats that the various system calls can use. For instance, on a Japanese Unix workstation, a user might obtain a filename represented in the EUC-JP file encoding and then translate the characters to the jisx0208 font encoding in order to display the filename in a Tk widget. The purpose of the encoding package is to help bridge the translation gap. UTF-8 provides an intermediate staging ground for all the various encodings. In the example above, text would be translated into UTF-8 from whatever file encoding the operating system is using. Then it would be translated from UTF-8 into whatever font encoding the display routines require.

ある基本符号は Tcl 内に言語翻訳される｡他のものは使用者によって定義されるか､動的にOSに依存しない方法で符号化ファイルから積込まれる｡ 　　　 Some basic encodings are compiled into Tcl. Others can be defined by the user or dynamically loaded from encoding files in a platform-independent manner.

### 説明 DESCRIPTION

Tcl_GetEncoding はその name が与えられた符号系を見付ける｡その名前は､組込まれた Tcl 符号系か､ Tcl_CreateEncoding 呼出しにより登録された使用者定義符号系か､動的積込み可能な符号ファイルか､を参照している｡返り値は字句であって､符号系を表現し､引続く譬えば Tcl_GetEncodingName や Tcl_FreeEncoding や Tcl_UtfToExternal の様な手続函数の呼出しに使うことができる｡もし名前が何かの既知の又は積込み可能な符号を参照しない場合､NULL が返され不都合伝言文が interp 内に返される｡ Tcl_GetEncoding finds an encoding given its name. The name may refer to a built-in Tcl encoding, a user-defined encoding registered by calling Tcl_CreateEncoding, or a dynamically-loadable encoding file. The return value is a token that represents the encoding and can be used in subsequent calls to procedures such as Tcl_GetEncodingName, Tcl_FreeEncoding, and Tcl_UtfToExternal. If the name did not refer to any known or loadable encoding, NULL is returned and an error message is returned in interp.

符号系梱包は現在使用中の全ての符号系の基礎データを維持する｡ name が見える最初の時は､ Tcl_GetEncoding は参照計数1 を伴って符号系を返す｡もし同じ name が更なるときに要求されると､新しい符号形の割付けとそれに結合したデータ構造の負担なしに､符号系の参照計数が増加される｡ 　　　 The encoding package maintains a database of all encodings currently in use. The first time name is seen, Tcl_GetEncoding returns an encoding with a reference count of 1. If the same name is requested further times, then the reference count for that encoding is incremented without the overhead of allocating a new encoding and all its associated data structures.

符号系encodingがもはや必要ない時､それを解放する為に Tcl_FreeEncoding が呼ばれるであろう｡符号系が最早､何処にも使われない時(即ち､得た回数と同じ回数だけ解放された)､Tcl_FreeEncoding は符号系が使用した全ての記憶域を開放し基礎データからそれを削除する｡ 　　　 When an encoding is no longer needed, Tcl_FreeEncoding should be called to release it. When an encoding is no longer in use anywhere (i.e., it has been freed as many times as it has been gotten) Tcl_FreeEncoding will release all storage the encoding was using and delete it from the database.

Tcl_GetEncodingFromObj は objPtr の文字列表現を符号系の名前として扱い､その名前の符号系を見つける､丁度 Tcl_GetEncoding が行っている様に｡符号系が見付かった時､ objPtr 値内部に､将来の参照の為に高速記憶する､Tcl_Encoding 字句は encodingPtr により指される記憶域に書かれ､値 TCL_OK が返される｡その様な符号系が見付らない場合､ TCL_ERROR が返され､ *encodingPtr への書込みは起らない｡丁度､ Tcl_GetEncoding のようにその字句が最早使われない時は､呼出し者は結果の符合系に Tcl_FreeEncoding を呼ぶべきである｡ Tcl_GetEncodingFromObj treats the string representation of objPtr as an encoding name, and finds an encoding with that name, just as Tcl_GetEncoding does. When an encoding is found, it is cached within the objPtr value for future reference, the Tcl_Encoding token is written to the storage pointed to by encodingPtr, and the value TCL_OK is returned. If no such encoding is found, the value TCL_ERROR is returned, and no writing to *encodingPtr takes place. Just as with Tcl_GetEncoding, the caller should call Tcl_FreeEncoding on the resulting encoding token when that token will no longer be used.

Tcl_ExternalToUtfDString は原資緩衝域の src を指定された符号系から UTF-8 に変換する｡変換されたバイトは dstPtr 内に保存され､それは零終端形になる｡呼出し側は最終的に dstPtr 内に保存されたどの情報も解放する為に Tcl_DStringFree を呼ぶ｡変換の時､もし原資緩衝域の何かの文字が目標符号系で表現できない場合､無為設定の退却文字が使われる｡返り値は DString 内に保存された値を指示する｡ Tcl_ExternalToUtfDString converts a source buffer src from the specified encoding into UTF-8. The converted bytes are stored in dstPtr, which is then null-terminated. The caller should eventually call Tcl_DStringFree to free any information stored in dstPtr. When converting, if any of the characters in the source buffer cannot be represented in the target encoding, a default fallback character will be used. The return value is a pointer to the value stored in the DString.

Tcl_ExternalToUtfDStringExは､古いTcl_ExternalToUtfDStringの､より柔軟な版である｡それは三つの追加引数interpとflagsとerrorIdxPtrをとる｡flags假引数は､変換の為に使われる輪郭を指定する為に使われ得る｡符号化されるべき原資文字列全体は函数内に渡されたことと推測して､flags内のTCL_ENCODING_STARTビットとTCL_ENCODING_ENDビットは､無視される｡成功すると､函数は､*dstPtr内に保存された変換された文字列を伴って､ TCL_OK を返す｡不適正旗徴の様な､符号化変換以外の不都合に関して､Tcl_ExternalToUtfに関して下に列挙されたTCL_CONVERT_*不都合の内の一つを返す｡これ等の内の一つの変換不都合が返された時､もし､errorIdxがNULLである場合のみ､不都合伝言文がinterpに保存される｡それ以外は､不都合伝言文は保存されない､理由は､函数が､呼出側は､その位置までの､復号データに興味があり､且つ､これを､すぐさま不都合状態としては取扱わない､と期待するから｡不都合の場所の指示子は*errorIdxPtrに保存される｡ Tcl_ExternalToUtfDStringEx is a more flexible version of older Tcl_ExternalToUtfDString function. It takes three additional parameters, interp, flags and errorIdxPtr. The flags parameter may be used to specify the profile to be used for the transform. The TCL_ENCODING_START and TCL_ENCODING_END bits in flags are ignored as the function assumes the entire source string to be decoded is passed into the function. On success, the function returns TCL_OK with the converted string stored in *dstPtr. For errors other than conversion errors, such as invalid flags, the function returns TCL_ERROR with an error message in interp if it is not NULL. For conversion errors, Tcl_ExternalToUtfDStringEx returns one of the TCL_CONVERT_* errors listed below for Tcl_ExternalToUtf. When one of these conversion errors is returned, an error message is stored in interp only if errorIdxPtr is NULL. Otherwise, no error message is stored as the function expects the caller is interested the decoded data up to that point and not treating this as an immediate error condition. The index of the error location is stored in *errorIdxPtr.

呼出側は､*dstPtr原資を､戻り値に関係なく､函数から､解放する為にTcl_DStringFreeを呼出さねばならない｡ The caller must call Tcl_DStringFree to free up the *dstPtr resources irrespective of the return value from the function.

Tcl_ExternalToUtf は原資緩衝域の src を指定された符号系から UTF-8 に変換する｡ srcLen バイト迄が原資緩衝域から変換され､変換された dstLen バイト迄が dst 内に保存される｡全ての場合､ *srcReadPtr はバイトの数が入れられ､それは首尾よく src から変換され､ dst に保存されたバイトに相当する数が *dstWrotePtr に入れられる｡返り値は次の内の１つである: Tcl_ExternalToUtf converts a source buffer src from the specified encoding into UTF-8. Up to srcLen bytes are converted from the source buffer and up to dstLen converted bytes are stored in dst. In all cases, *srcReadPtr is filled with the number of bytes that were successfully converted from src and *dstWrotePtr is filled with the corresponding number of bytes that were stored in dst. The return value is one of the following:

TCL_OK
  src の全バイトが変換された｡ 　　　 All bytes of src were converted.

TCL_CONVERT_NOSPACE
  出力緩衝域は変換されたデータ全てには大きさが不足;しかし可能な限りの文字を変換した｡ 　　 The destination buffer was not large enough for all of the converted data; as many characters as could fit were converted though.

TCL_CONVERT_MULTIBYTE
  原資緩衝域の最後の幾つかのバイトは多バイト並びの始まりである､その並びを完成するには更なるバイトが必要｡変換譜への引続く呼出しに未変換バイトを含む緩衝域を渡すべきであり､その中に､ src の残りに加えてバイト原資の流れからの幾らかの更なるバイトを加え､適切に先に多バイト並びを分離して適切に変換するべき｡ 　　　 The last few bytes in the source buffer were the beginning of a multibyte sequence, but more bytes were needed to complete this sequence. A subsequent call to the conversion routine should pass a buffer containing the unconverted bytes that remained in src plus some further bytes from the source stream to properly convert the formerly split-up multibyte sequence.

TCL_CONVERT_SYNTAX
  原資緩衝域は不適正はバイトか文字並びを含む｡これは､これは､入力流れが損傷していたか入力符号系方法が誤認識したかの時に起り得る｡ 　 The source buffer contained an invalid byte or character sequence. This may occur if the input stream has been damaged or if the input encoding method was misidentified.

TCL_CONVERT_UNKNOWN
  原資緩衝域は目標符号系が表現できない文字を含む｡ The source buffer contained a character that could not be represented in the target encoding.

Tcl_UtfToExternalDString は原資緩衝域の src を UTF-8 から 指定された符号系 encoding に変換する｡変換されたバイトは dstPtr に保存される､その終端は適切に符号系指定の零になる｡呼出し側は最終的には dstPtr に保存された情報を解放する為に Tcl_DStringFree を呼ぶべきである｡変換時に､どれかの原資緩衝域内の文字が目標符号系で表現できない場合は､無為設定の退却文字が使われる｡返り値は DString 内に保存された値を指示する｡ Tcl_UtfToExternalDString converts a source buffer src from UTF-8 into the specified encoding. The converted bytes are stored in dstPtr, which is then terminated with the appropriate encoding-specific null. The caller should eventually call Tcl_DStringFree to free any information stored in dstPtr. When converting, if any of the characters in the source buffer cannot be represented in the target encoding, a default fallback character will be used. The return value is a pointer to the value stored in the DString.

Tcl_UtfToExternalDStringExはTcl_UtfToExternalDStringの拡張版であり､UTF-8符号化された原資データを指定された符号系に変換する｡ 但し､変換の方向に就いて､假引数と戻り値はTcl_ExternalToUtfDStringExと同一である｡同じ事柄の詳細は上述の函数を参照されたい｡ Tcl_UtfToExternalDStringEx is an enhanced version of Tcl_UtfToExternalDString that transforms UTF-8 encoded source data to a specified encoding. Except for the direction of the transform, the parameters and return values are identical to those of Tcl_ExternalToUtfDStringEx. See that function above for details about the same.

函数からの戻り符号に関係なく､呼出側は､函数が帰った時に､*dstPtrに拘る原資の拘束を解かねばならない｡ Irrespective of the return code from the function, the caller must free resources associated with *dstPtr when the function returns.

Tcl_UtfToExternal は原資緩衝域の src を UTF-8 から 指定された符号系に変換する｡ srcLen バイト迄が原資緩衝域から変換され､変換された dstLen バイト迄が dst 内に保存される｡全ての場合､ *srcReadPtrr はバイトの数が入れられ､それは首尾よく src から変換され､ dst に保存されたバイトに相当する数が *dstWrotePtr に入れられる｡返り値は､ Tcl_ExternalToUtf の為の返り値と同じである｡ Tcl_UtfToExternal converts a source buffer src from UTF-8 into the specified encoding. Up to srcLen bytes are converted from the source buffer and up to dstLen converted bytes are stored in dst. In all cases, *srcReadPtr is filled with the number of bytes that were successfully converted from src and *dstWrotePtr is filled with the corresponding number of bytes that were stored in dst. The return values are the same as the return values for Tcl_ExternalToUtf.

Tcl_GetEncodingName は大略 Tcl_GetEncoding の逆である｡ encoding が与えられ､返り値は encoding 引数であり符号系の生成に使われる｡ Tcl_GetEncodingName に返される文字列は encoding が削除される迄生き延びることが保障されているだけである｡呼出し側でこの文字列を修正してはならない｡ Tcl_GetEncodingName is roughly the inverse of Tcl_GetEncoding. Given an encoding, the return value is the name argument that was used to create the encoding. The string returned by Tcl_GetEncodingName is only guaranteed to persist until the encoding is deleted. The caller must not modify this string.

Tcl_GetEncodingNulLengthは､指定された符号系での文字列に於ける末尾のヌル並びの長さを､返す｡ Tcl_GetEncodingNulLength returns the length of the terminating nul byte sequence for strings in the specified encoding.

Tcl_SetSystemEncoding は無為設定の符号系を設定する､それは何時であれ､使用者が何か他の符号系函数の encoding 引数の為に NULL 値を渡す時に使われるべきである｡もし name が NULL の場合､系の符号系は無為設定の系の符号系 binary に刷新される｡名前がどの既知又は積込み可能の符号系でもない場合､TCL_ERROR が返され､不都合伝言文が interp に残される｡それ以外の場合､この手続函数は新しい符号系の参照計数を増加し､古い系の符号系の参照計数を減少し､ TCL_OKを返す｡ Tcl_SetSystemEncoding sets the default encoding that should be used whenever the user passes a NULL value for the encoding argument to any of the other encoding functions. If name is NULL, the system encoding is reset to the default system encoding, binary. If the name did not refer to any known or loadable encoding, TCL_ERROR is returned and an error message is left in interp. Otherwise, this procedure increments the reference count of the new system encoding, decrements the reference count of the old system encoding, and returns TCL_OK.

Tcl_GetEncodingNameFromEnvironment は､系呼出しとOSに関して適切な環境の調査に基き､系の符号系として使用する為に正しいと信じられる符号系の名前を報告する為に､ Tcl 外部函数の為の手段を提供する｡それは､非初期化又は解放された Tcl_DString へのポインター bufPtr を受入れて､符号系の名前を其処に書く｡ Tcl_DStringValue が返される｡ Tcl_GetEncodingNameFromEnvironment provides a means for the Tcl library to report the encoding name it believes to be the correct one to use as the system encoding, based on system calls and examination of the environment suitable for the platform. It accepts bufPtr, a pointer to an uninitialized or freed Tcl_DString and writes the encoding name to it. The Tcl_DStringValue is returned.

Tcl_GetEncodingNames は interp 結果を､現在定義されているか動的に積込み可能な全ての符号系の名前により構成されるリストに設定し Tcl_SetEncodingSearchPath によって指定された符号系経路を捜す｡この手続函数は動的に積込み可能なファイルが適正なデータを含んでいるか単に存在するだけかは不確かである｡ Tcl_GetEncodingNames sets the interp result to a list consisting of the names of all the encodings that are currently defined or can be dynamically loaded, searching the encoding path specified by Tcl_SetEncodingSearchPath. This procedure does not ensure that the dynamically-loadable encoding files contain valid data, but merely that they exist.

Tcl_CreateEncoding は新しい符号系を定義し､符号系と UTF-8 の間の変換を呼戻す C 手続函数を登録する｡ Tcl_CreateEncoding により作成された符号系はその後､ Tcl_GetEncoding によって使われる基礎データ内で可視になる｡丁度 Tcl_GetEncoding 手続函数の様に返り値は符号系を表現する字句結果であり､引き続く他の符号系函数の呼出しに使用可能である｡Tcl_CreateEncoding は参照計数 1 の符号系を返す｡もし指定された name の符号系が既に実在する場合､基礎データ内のその見出しは新しい符号系に置換えられる; 古い符号系の字句は適正に残り､以前の様に振舞うことを続けるが､新しい字句の使用者は新しい符号系手続函数を呼ぶ様になる｡ Tcl_CreateEncoding defines a new encoding and registers the C procedures that are called back to convert between the encoding and UTF-8. Encodings created by Tcl_CreateEncoding are thereafter visible in the database used by Tcl_GetEncoding. Just as with the Tcl_GetEncoding procedure, the return value is a token that represents the encoding and can be used in subsequent calls to other encoding functions. Tcl_CreateEncoding returns an encoding with a reference count of 1. If an encoding with the specified name already exists, then its entry in the database is replaced with the new encoding; the token for the old encoding will remain valid and continue to behave as before, but users of the new token will now call the new encoding procedures.

Tcl_CreateEncoding への typePtr 引数は符号系の名前に関する情報と､この符号系と UTF-8 の間の変換に呼出される手続函数とから構成される｡それは次の様に定義される: 　　　 The typePtr argument to Tcl_CreateEncoding contains information about the name of the encoding and the procedures that will be called to convert between this encoding and UTF-8. It is defined as follows:

    typedef struct {
        const char *encodingName;
        Tcl_EncodingConvertProc *toUtfProc;
        Tcl_EncodingConvertProc *fromUtfProc;
        Tcl_EncodingFreeProc *freeProc;
        void *clientData;
        Tcl_Size nullSize;
    } Tcl_EncodingType;

encodingName は符号系のための文字列名を提供し､それにより Tcl_GetEncoding の様な他の手続函数内で参照可能である｡ toUtfProc はこの符号系の文書から UTF-8 に変換する為に起動する手続の呼戻しを参照する｡ freeProc は符号系が削除される時に起動される手続函数の呼戻しを参照する｡ freeProc の欄は NULL かもしれない｡ clientData は､何時であれそれが呼ばれた時に toUtfProc と fromUtfProc と freeProc に渡す任意の１語値である｡典型的には之はデータ構造へのポインターであり､符号系固有の情報を含み､呼戻し手続函数によって使われる｡譬えば､二つの非常に似た符号系たとえば ascii と macRoman が同じ呼戻し手続函数を使うかもしれないが､その挙動を制御する為に clientData の異なる値を使う｡ nullSize は零バイトの数を指定する､それはこの符号系内の文字列の末尾を知らせる｡それは､ 1 ( ASCII or Shift-JIS のような１バイトか多バイト符号系)か 2 (ユニコードの様に２バイト符号系)でなければならない｡固定長符号系の 3 や文字当りそれ以上のバイト( CNS11643等)は受付けられない｡ 　　　 The encodingName provides a string name for the encoding, by which it can be referred in other procedures such as Tcl_GetEncoding. The toUtfProc refers to a callback procedure to invoke to convert text from this encoding into UTF-8. The fromUtfProc refers to a callback procedure to invoke to convert text from UTF-8 into this encoding. The freeProc refers to a callback procedure to invoke when this encoding is deleted. The freeProc field may be NULL. The clientData contains an arbitrary one-word value passed to toUtfProc, fromUtfProc, and freeProc whenever they are called. Typically, this is a pointer to a data structure containing encoding-specific information that can be used by the callback procedures. For instance, two very similar encodings such as ascii and macRoman may use the same callback procedure, but use different values of clientData to control its behavior. The nullSize specifies the number of zero bytes that signify end-of-string in this encoding. It must be 1 (for single-byte or multi-byte encodings like ASCII or Shift-JIS) or 2 (for double-byte encodings like Unicode). Constant-sized encodings with 3 or more bytes per character (such as CNS11643) are not accepted.

呼戻し手続函数 toUtfProc と fromUtfProc は型 Tcl_EncodingConvertProc に合致すべきである: The callback procedures toUtfProc and fromUtfProc should match the type Tcl_EncodingConvertProc:

    typedef int Tcl_EncodingConvertProc(
            void *clientData,
            const char *src,
            int srcLen,
            int flags,
            Tcl_EncodingState *statePtr,
            char *dst,
            int dstLen,
            int *srcReadPtr,
            int *dstWrotePtr,
            int *dstCharsPtr);

toUtfProc と fromUtfProc 手続函数は Tcl_ExternalToUtf や Tcl_UtfToExternal の同族函数から実際の変換を遂行するために呼ばれる｡これ等の手続函数への clientData 媒介変数は符合系が作成された時に Tcl_CreateEncoding に指定された clientData 欄と同じである｡呼出し手続函数への残りの引数は､最初に説明した Tcl_ExternalToUtf や Tcl_UtfToExternal への引数と同じであるが､次の例外がある｡これ等高水準函数の一つへの srcLen 引数が負数の場合､呼戻し手続函数に渡す値は､ src の適切な符号系固有の文字列長さになる｡もし高水準函数の一つへの srcReadPtr かdstWrotePtr か dstCharsPtr 引数のどれかが NULL の場合､呼戻し手続函数に渡される対応する値は非-NULL 位置になる｡ 　　　 The toUtfProc and fromUtfProc procedures are called by the Tcl_ExternalToUtf or Tcl_UtfToExternal family of functions to perform the actual conversion. The clientData parameter to these procedures is the same as the clientData field specified to Tcl_CreateEncoding when the encoding was created. The remaining arguments to the callback procedures are the same as the arguments, documented at the top, to Tcl_ExternalToUtf or Tcl_UtfToExternal, with the following exceptions. If the srcLen argument to one of those high-level functions is negative, the value passed to the callback procedure will be the appropriate encoding-specific string length of src. If any of the srcReadPtr, dstWrotePtr, or dstCharsPtr arguments to one of the high-level functions is NULL, the corresponding value passed to the callback procedure will be a non-NULL location.

呼戻し手続函数 freeProc は､非-NULL であれば､型 Tcl_EncodingFreeProcに合致すべきである: 　　 The callback procedure freeProc, if non-NULL, should match the type Tcl_EncodingFreeProc:

    typedef void Tcl_EncodingFreeProc(
            void *clientData);

この freeProc 函数は符号系が削除される時に呼出される｡ clientData 媒介変数は符号系が作成された時に Tcl_CreateEncoding に指定された clientData 欄と同じである｡ 　　　 This freeProc function is called when the encoding is deleted. The clientData parameter is the same as the clientData field specified to Tcl_CreateEncoding when the encoding was created.

Tcl_GetEncodingSearchPath と Tcl_SetEncodingSearchPath は符号系データファイルが捜索されたファイル系ディレクトリーのリストを利用し設定する為に呼ばれる｡ Tcl_GetEncodingSearchPath and Tcl_SetEncodingSearchPath are called to access and set the list of filesystem directories searched for encoding data files.

Tcl_GetEncodingSearchPath に返された値は最後の成功裏の Tcl_SetEncodingSearchPath への呼出しにより保存された値である｡もし Tcl_SetEncodingSearchPath への呼出が生じない場合､ Tcl は環境に基いて所期値を算出する｡完全な課程処理の為の符号系捜索経路が一つあり､処理課程内の全ての時分割片に共有されている｡ 　　　 The value returned by Tcl_GetEncodingSearchPath is the value stored by the last successful call to Tcl_SetEncodingSearchPath. If no calls to Tcl_SetEncodingSearchPath have occurred, Tcl will compute an initial value based on the environment. There is one encoding search path for the entire process, shared by all threads in the process.

Tcl_SetEncodingSearchPath は TCL_ERROR が返される様な searchPath が適切な Tcl リストである限り､ searchPath を保存し､ TCL_OK を返す｡ searchPath の要素は､実在する読出し可能なファイル系ディレクトリーとしては検証されない｡符号系データファイルの捜索が行われた時､ searchPath 上の非実在の又は非可読のファイル系ディレクトリーは無視される｡ Tcl_SetEncodingSearchPath stores searchPath and returns TCL_OK, unless searchPath is not a valid Tcl list, which causes TCL_ERROR to be returned. The elements of searchPath are not verified as existing readable filesystem directories. When searching for encoding data files takes place, and non-existent or non-readable filesystem directories on the searchPath are silently ignored.

### ENCODING FILES

空白は Tcl への全ての可能な符号化算法で予備翻訳を妨げる､そこで多くの符号系はディスク上に動的積込み可能な符号系ファイルとして保存する｡この振舞いは又､使用者に追加的符号系ファイルの生成を許容する､それは同じ仕組みを使って積込み可能である｡この様な符号系ファイルは､表に関する情報や外部の符号系とユニコードとの間の対応を使った除外並びを含む｡その外部符号系は１バイト､多バイト､２バイト文字から構成され得る｡ 　　　 Space would prohibit precompiling into Tcl every possible encoding algorithm, so many encodings are stored on disk as dynamically-loadable encoding files. This behavior also allows the user to create additional encoding files that can be loaded using the same mechanism. These encoding files contain information about the tables and/or escape sequences used to map between an external encoding and Unicode. The external encoding may consist of single-byte, multi-byte, or double-byte characters.

それぞれの動的積込み可能の符号系は文書ファイルとして表現される｡ファイルの先頭の行は､ “#” 印であり､注釈である､それは人が可読なファイルの説明を提供する｡次の行は符号系ファイルの型を識別する｡それは次の内の一つの文字である: 　　　 Each dynamically-loadable encoding is represented as a text file. The initial line of the file, beginning with a “#” symbol, is a comment that provides a human-readable description of the file. The next line identifies the type of encoding file. It can be one of the following letters:

[1] S
  １文字符号系､ここでこの符号系内では､１文字は常に１バイト長さである｡例は多くの欧州言語により使用されている iso8859-1 である｡ 　　　 A single-byte encoding, where one character is always one byte long in the encoding. An example is iso8859-1, used by many European languages.

[2] D
  倍バイト符号系､ここでこの符号系内では､１文字は常に２バイト長さである｡例は､支那の文書で使われる big5 である｡ 　　　 A double-byte encoding, where one character is always two bytes long in the encoding. An example is big5, used for Chinese text.

[3] M
  多バイト符号系､ここでこの符号系内では､１文字は一又は二バイト長さである｡特定のバイトが先頭バイトであり他のバイトが必ず続き２つのバイトが１つの文字を表現する｡その他のバイトは先頭バイトではなく､それ自身を表現する｡例は､多くの日本の計算機で使われている shiftjis である｡ 　　　 A multi-byte encoding, where one character may be either one or two bytes long. Certain bytes are lead bytes, indicating that another byte must follow and that together the two bytes represent one character. Other bytes are not lead bytes and represent themselves. An example is shiftjis, used by many Japanese computers.

[4] E
  除外並び符号系､バイトの特定の並びが文字ではなく､続くバイトが如何に解釈されるかを記述する命令である｡ 　　　 An escape-sequence encoding, specifying that certain sequences of bytes do not represent characters, but commands that describe how following bytes should be interpreted.

ファイルの残りの行はその型に依存する｡ 　　　 The rest of the lines in the file depend on the type.

[1] と [2] と [3] は､総称して表基準の符号系と称せられる｡表基準の符号系ファイル内の行は､ shiftjis 符号系から取られたこの例と同じ書式である(これは完全なファイルではない): 　　　 Cases [1], [2], and [3] are collectively referred to as table-based encoding files. The lines in a table-based encoding file are in the same format as this example taken from the shiftjis encoding (this is not the complete file):

    # Encoding file: shiftjis, multi-byte
    M
    003F 0 40
    00
    0000000100020003000400050006000700080009000A000B000C000D000E000F
    0010001100120013001400150016001700180019001A001B001C001D001E001F
    0020002100220023002400250026002700280029002A002B002C002D002E002F
    0030003100320033003400350036003700380039003A003B003C003D003E003F
    0040004100420043004400450046004700480049004A004B004C004D004E004F
    0050005100520053005400550056005700580059005A005B005C005D005E005F
    0060006100620063006400650066006700680069006A006B006C006D006E006F
    0070007100720073007400750076007700780079007A007B007C007D203E007F
    0080000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
    FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
    FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
    FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    81
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    300030013002FF0CFF0E30FBFF1AFF1BFF1FFF01309B309C00B4FF4000A8FF3E
    FFE3FF3F30FD30FE309D309E30034EDD30053006300730FC20152010FF0F005C
    301C2016FF5C2026202520182019201C201DFF08FF0930143015FF3BFF3DFF5B
    FF5D30083009300A300B300C300D300E300F30103011FF0B221200B100D70000
    00F7FF1D2260FF1CFF1E22662267221E22342642264000B0203220332103FFE5
    FF0400A200A3FF05FF03FF06FF0AFF2000A72606260525CB25CF25CE25C725C6
    25A125A025B325B225BD25BC203B301221922190219121933013000000000000
    000000000000000000000000000000002208220B2286228722822283222A2229
    000000000000000000000000000000002227222800AC21D221D4220022030000
    0000000000000000000000000000000000000000222022A52312220222072261
    2252226A226B221A223D221D2235222B222C0000000000000000000000000000
    212B2030266F266D266A2020202100B6000000000000000025EF000000000000

このファイルの第３番目の行は三つの数である｡第１の数は退避文字(１６進数)で UTF-8 からこの符号系への変換に使われる｡第２の数は､このファイルが記号の文字形状の場合は 1 ､それ以外は 0 である｡最後の文字は(１０進数)は何頁のデータが続くかである｡ 　　　 The third line of the file is three numbers. The first number is the fallback character (in base 16) to use when converting from UTF-8 to this encoding. The second number is a 1 if this file represents the encoding for a symbol font, or 0 otherwise. The last number (in base 10) is how many pages of data follow.

上の例の中の引続く行は頁であって､如何に符号系から２バイトユニコードに対応するかを記述する｡頁の第１行は頁番号を識別する｡それに続くのは 256 個の倍バイト数であり､ 16 行の 16 の数に整えられている｡符号系の文字が与えられ､文字の上バイトが使う頁を選択し､文字の下バイトがその頁内の倍バイト数の一つを選択する為に索引として使う - ユニコード文字に相当する値が得られる｡上の例を調べることにより､ shiftjis 内の文字 0x7E と 0x8163 がユニコードの 203E と 2026 にそれぞれ対応する事が判る｡ 　　　 Subsequent lines in the example above are pages that describe how to map from the encoding into 2-byte Unicode. The first line in a page identifies the page number. Following it are 256 double-byte numbers, arranged as 16 rows of 16 numbers. Given a character in the encoding, the high byte of that character is used to select which page, and the low byte of that character is used as an index to select one of the double-byte numbers in that page - the value obtained being the corresponding Unicode character. By examination of the example above, one can see that the characters 0x7E and 0x8163 in shiftjis map to 203E and 2026 in Unicode, respectively.

最初の頁に続くのは他の全ての頁であり､それぞれ最初と同じ形式である: 頁を識別する一つの数に 256 の倍バイトのユニコード文字が続く｡もし符号系内の文字がユニコード文字 0000 に対応している場合､それは文字は実際は実在しないことを意味する｡もし頁上の全ての文字が 0000 に対応するならば､その頁は省略され得る｡ 　　　 Following the first page will be all the other pages, each in the same format as the first: one number identifying the page followed by 256 double-byte Unicode characters. If a character in the encoding maps to the Unicode character 0000, it means that the character does not actually exist. If all characters on a page would map to 0000, that page can be omitted.

[4] の場合は除外並び符号系ファイルである｡この型のファイル内の行は iso2022-jp 符号系から取ったこの例と同じ形式である: 　　 Case [4] is the escape-sequence encoding file. The lines in an this type of file are in the same format as this example taken from the iso2022-jp encoding:

    # Encoding file: iso2022-jp, escape-driven
    E
    init		{}
    final		{}
    iso8859-1	\x1B(B
    jis0201		\x1B(J
    jis0208		\x1B$@
    jis0208		\x1B$B
    jis0212		\x1B$(D
    gb2312		\x1B$A
    ksc5601		\x1B$(C

ファイル内で､第１列は選択肢を表現し､第２列は結合した値である｡ init は第１文字を変換する前に､発送又は待受けるための文字列であり､ final は最後の文字の後に発送又は待受けるための文字列である｡全ての他の選択肢は表基準の符号系の名前である; 結合した値は除外並びであって､それは､その符号系を記す｡値の為に Tcl 構文が使われる; 上の例では､たとえば､ “{}” は空文字列を表現し､ “\x1B” は文字 27 を表す｡ 　　　 In the file, the first column represents an option and the second column is the associated value. init is a string to emit or expect before the first character is converted, while final is a string to emit or expect after the last character. All other options are names of table-based encodings; the associated value is the escape-sequence that marks that encoding. Tcl syntax is used for the values; in the above example, for instance, “{}” represents the empty string and “\x1B” represents character 27.

Tcl_GetEncoding が未だ積込まれてない符号系 name と遭遇した時､ Tcl がその記述譜外部函数を捜すそれぞれのディレクトリーの仔ディレクトリー encoding から name.enc と呼ばれる符号系ファイルを積込もうと試みる｡もし符号系ファイルが実在するが､悪しく書式化されている場合､不具合伝言文が interp 内に残される｡ When Tcl_GetEncoding encounters an encoding name that has not been loaded, it attempts to load an encoding file called name.enc from the encoding subdirectory of each directory that Tcl searches for its script library. If the encoding file exists, but is malformed, an error message will be left in interp.

### 参照回数管理 REFERENCE COUNT MANAGEMENT

Tcl_GetEncodingFromObjはそのobjPtr引数の参照回数を修正しない; 読出すだけである｡註意すべきは､しかしながら､この函数は解釈実行機能の結果を設定するかもしれず;もし､それが対象への参照を保持しているのみの場合､それは削除される｡ Tcl_GetEncodingFromObj does not modify the reference count of its objPtr argument; it only reads. Note however that this function may set the interpreter result; if that is the only place that is holding a reference to the object, it will be deleted.

Tcl_GetEncodingSearchPathは少なくとも1の参照回数を返す｡ Tcl_GetEncodingSearchPath returns an object with a reference count of at least 1.

### PROFILES

符号系の輪郭は､符号化函数によって扱われる符号化変換内の間違いの応接方法を定義する｡応用譜は､使われる為の輪郭を､TCL_ENCODING_PROFILE_TCL8かTCL_ENCODING_PROFILE_STRICTかTCL_ENCODING_PROFILE_REPLACEの内の高々一つの函数に渡される､flags假引数を若しくは則で連結して､指定できる｡これらは､それぞれ､tcl8とstrictとreplace輪郭に対応する｡もし､どれも指定されないと､版に依拠した無為設定の輪郭が使われる｡Tcl 9.0に於ては､無為設定輪郭はstrictである｡ Encoding profiles define the manner in which errors in the encoding transforms are handled by the encoding functions. An application can specify the profile to be used by OR-ing the flags parameter passed to the function with at most one of TCL_ENCODING_PROFILE_TCL8, TCL_ENCODING_PROFILE_STRICT or TCL_ENCODING_PROFILE_REPLACE. These correspond to the tcl8, strict and replace profiles respectively. If none are specified, a version-dependent default profile is used. For Tcl 9.0, the default profile is strict.

輪郭に関する詳細は､encoding命令の説明書の輪郭PROFILES節を参照されたい｡ For details about profiles, see the PROFILES section in the documentation of the encoding command.

### SEE ALSO

encoding

### KEYWORDS

utf, encoding, convert
Copyright © 1997-1998 Sun Microsystems, Inc.