[概要] ・ユニコード文字列とマルチバイト文字列(バイナリ)の相互変換を行う ・対応エンコーディング: ・UTF-8, Shift_JIS, CP932, EUC-JP, eucJP-ms, JIS(ISO-2022-JP), ISO-2022-JP-1 [バージョン] ・0.0.2 [更新履歴] ・0.0.2 ・convert関数追加 [API] ・creole:from_string(InputString, Encoding) -> ResultString ユニコード文字列を指定のエンコーディングのマルチバイト文字列に変換する。 変換不能な文字に遭遇した場合は $? が代わりに使用される。 - InputString:string()# 入力文字列 - Encoding:atom()# エンコーディング方式。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ResultString:binary()# 変換後の文字列(バイナリ) ・creole:from_string(InputString, Encoding, ErrorFun) -> ResultString | {abort, PartialResultString, RestString} ユニコード文字列を指定のエンコーディングのマルチバイト文字列に変換する。 変換不能な文字に遭遇した場合は ErrorFun が呼び出される。 - InputString:string()# 入力文字列 - Encoding:atom()# エンコーディング方式。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ErrorFun:function()# 変換不能な文字に遭遇した場合に呼び出される関数。 ErrorFun(変換不能な入力文字列) -> {代替文字/文字列:iodata(), 残りの入力文字列, 変換を続行するか}. {_, _, false}を返した場合は、関数全体の結果として{abort,_,_}が返る。 - ResultString:binary()# 変換後の文字列(バイナリ) - PartialResultString:binary()# ErrorFunの結果が{_,_,false}の場合に返る。その時点までの変換結果文字列。 - RestString:string()# ErrorFunの結果が{_,_,false}の場合に返る。ErrorFunの返り値のタプルの二番目の値が使用される。 ・creole:to_string(InputString, Encoding) -> ResultString 指定のエンコーディングのマルチバイト文字列(バイナリ)をユニコード文字列に変換する。 変換不能な文字列に遭遇した場合は $? が代わりに使用される。 - InputString:binary()|string()# 入力マルチバイト文字列 - Encoding:atom()# エンコーディング方式。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ResultString:string()# 変換後の文字列 ・creole:to_string(InputString, Encoding, ErrorFun) -> ResultString | {abort, PartialResultString, RestString} 指定のエンコーディングのマルチバイト文字列(バイナリ)をユニコード文字列に変換する。 変換不能な文字に遭遇した場合は ErrorFun が呼び出される。 - InputString:binary()|string()# 入力マルチバイト文字列 - Encoding:atom()# エンコーディング方式。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ErrorFun:function()# 変換不能な文字に遭遇した場合に呼び出される関数。 ErrorFun(変換不能な入力文字列) -> {代替文字/文字列:iodata(), 残りの入力文字列, 変換を続行するか}. {_, _, false}を返した場合は、関数全体の結果として{abort,_,_}が返る。 - ResultString:binary()# 変換後の文字列 - PartialResultString:string()# ErrorFunの結果が{_,_,false}の場合に返る。その時点までの変換結果文字列。 - RestString:binary()# ErrorFunの結果が{_,_,false}の場合に返る。ErrorFunの返り値のタプルの二番目の値が使用される。 ・creole:convert(InputString, FromEncoding, ToEncoding) -> ResultString マルチバイト文字列を別のエンコーディングのマルチバイト文字列に変換する。 変換不能な文字列に遭遇した場合は $? が代わりに使用される。 - InputString:binary()|string()# 入力マルチバイト文字列 - FromEncoding:atom()# 入力文字列のエンコーディング。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ToEncoding:atom()# 出力文字列のエンコーディング。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ResultString:binary()# 変換後のマルチバイト文字列 ・creole:convert(InputString, FromEncoding, ToEncoding, ErrorFun) -> ResultString | {abort, PartialResultString, RestString} マルチバイト文字列を別のエンコーディングのマルチバイト文字列に変換する。 変換不能な文字に遭遇した場合は ErrorFun が呼び出される。 - InputString:binary()|string()# 入力マルチバイト文字列 - FromEncoding:atom()# 入力文字列のエンコーディング。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ToEncoding:atom()# 出力文字列のエンコーディング。utf8, sjis, cp932, eucjp, eucjp_ms, jis, iso_2022_jp_1 - ErrorFun:function()# 変換不能な文字に遭遇した場合に呼び出される関数。 ErrorFun(変換不能な入力文字列:binary()|string()) -> {代替文字/文字列:iodata(), 残りの入力文字列, 変換を続行するか}. {_, _, false}を返した場合は、関数全体の結果として{abort,_,_}が返る。 - ResultString:binary()# 変換後のマルチバイト文字列 - PartialResultString:binary()|string()# ErrorFunの結果が{_,_,false}の場合に返る。その時点までの変換結果文字列。 - RestString:binary()|string()# ErrorFunの結果が{_,_,false}の場合に返る。ErrorFunの返り値のタプルの二番目の値が使用される。 [変換テーブルの自動生成] ・src/mapping/以下のソースは自動生成されたもの ・詳細は gensrc/README を参照 [参考] ・ユニコードと他のエンコーディングのマッピング: ・http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/ ・ftp://ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/ #OBSOLETE ・JIS(ISO-2022-JP): ・http://www.tohoho-web.com/wwwkanji.htm [TODO] ・テスト ・JIS(ISO-2022-JP)およびISO-2022-JP-1の'JIS-X-0208-1978'に対応 => 現状'JIS-X-0208-1983'で代替