R6RS:翻訳:Standard Libraries:2.9 Operations on strings

R6RS:翻訳:Standard Libraries:2.9 Operations on strings

2.9 文字列に対する操作

本節では文字列と、文字列の Unicode 符号を格納したバイトベクタを相互変換する手続きを説明する。バイトベクタをデコードするとき、エンコード例外はテキスト入出力の置き換え意味論と同じように取り扱われる(R6RS:翻訳:Standard Libraries:8.2.4 Transcoders 参照)。すなわち、不正な文字や不完全な文字に遭遇すると、生成される文字列に置き換え文字 U+FFFD が追加され、適切な長さのバイト列が無視され、後続のバイトに対してデコードが続けられる。

[procedure] (string->utf8 string)

与えられた文字列の UTF-8 符号を格納したバイトベクタを(それが空でない場合は)新たに割り当てて返す。

[procedure] (string->utf16 string)

[procedure] (string->utf16 string endianness)

endianness が指定される場合、それはシンボル big か little でなければならない。 string->utf16 手続きは与えられた文字列に対して UTF-16BE ないし UTF-16LE 符号を格納したバイトベクタを(それが空でない場合は)新たに割り当てて返す(バイトオーダーマークはつけない)。 endianness が指定されていないか big である場合には UTF-16BE が使われる。 endianness が little の場合には UTF-16LE が使われる。

[procedure] (string->utf32 string)

[procedure] (string->utf32 string endianness)

endianness は指定する場合にはシンボル big か little でなければならない。string->utf32 手続きは与えられた文字列に対して UTF-32BE ないし UTF-32LE 符号を格納したバイトベクタを(それが空でない場合は)新たに割り当てて返す(バイトオーダーマークはつけない)。 endianness が指定されていないか big である場合には UTF-32BE が使われる。 endianness が little の場合には UTF-32LE が使われる。

[procedure] (utf8->string bytevector)

与えられた bytevector で文字の並びが符号化された文字列を(それが空文字列でなければ)新たに割り当てて返す。

[procedure] (utf16->string bytevector endianness)

[procedure] (utf16->string bytevector endianness endianness-mandatory)

endianness はシンボル big か little でなければならない。 utf-16->string は、その文字の並びが与えられた bytevector で符号化された文字列を(それが空文字列でなければ)新たに割り当てて返す。 bytevector は UTF-16、 UTF-16BE、 UTF-16LE、 ないしはほかのみっつとは異なる第四のコード化法にしたがって以下のようにデコードされる。すなわち、 endianness-mandatory が省略されているか #f の場合、 utf-16->string は、もしあれば bytevector の先頭の BOM でエンディアンを決定する。この場合、 BOM は文字としてはデコードされない。また、このとき、 UTF-16 BOM がない場合には endianness で符号化のエンディアンを指定する。 endianness-mandatory が真値で、 endianness で符号化のエンディアンが指定されている場合、符号中の UTF-16 BOM は正規の文字列としてデコードされる。

: UTF-16 BOM はふたつバイト列のうちのひとつであり、 #FE、 #xFF はビッグエンディアン、 UTF-16BE を指定し、 #xFF、 #xFE はリトルエンディアン、 UTF-16LE を指定する。

[procedure] (utf32->string bytevector endianness)

[procedure] (utf32->string bytevector endianness endianness-mandatory)

endianness はシンボル big か little でなければならない。 utf-32->string は、その文字の並びが与えられた bytevector で符号化された文字列を(それが空文字列でなければ)新たに割り当てて返す。 bytevector は UTF-16、 UTF-16BE、 UTF-16LE、 ないしはほかのみっつとは異なる第四のコード化法にしたがって以下のようにデコードされる。すなわち、 endianness-mandatory が省略されているか #f の場合、 utf-32->string は、もしあれば bytevector の先頭の BOM でエンディアンを決定する。この場合、 BOM は文字としてはデコードされない。また、このとき、 UTF-32 BOM がない場合には endianness で符号化のエンディアンを指定する。 endianness-mandatory が真値で、 endianness で符号化のエンディアンが指定されている場合、符号中の UTF-32 BOM は正規の文字列としてデコードされる。

: UTF-32 BOM はふたつのバイト列のいずれかであり、#x00、 #x00、 #xFE、 #xFF はビッグエンディアン、 UTF-32BE を指定し、 #xFF、 #xFE、 #x00、 #x00 はリトルエンディアン、 UTF-32LE を指定する。


Last modified : 2008/03/23 02:32:57 UTC