gaucheで書く
[tigerii@fedora ~]$ rlwrap gosh gosh> (use gauche.charconv) #<undef> gosh> (define (my-url-encode string from-code to-code) (let ((p (open-input-conversion-port (open-input-string string) from-code :to-code to-code))) (display to-code) (display ":") (let loop ((ch (read-byte p))) (cond ((eof-object? ch) ch) (else (format #t "%~X" ch) (loop (read-byte p))))))) my-url-encode gosh> (my-url-encode "ウィキ" "*jp" "sjis") sjis:%83%45%83%42%83%4C#<eof> gosh> (my-url-encode "ウィキ" "*jp" "eucjp") eucjp:%A5%A6%A5%A3%A5%AD#<eof> gosh> (my-url-encode "ウィキ" "*jp" "utf-8") utf-8:%E3%82%A6%E3%82%A3%E3%82%AD#<eof>
変数
string ... エンコードする文字列
from-code ... 入力した文字列のコード(sjis,eucjp,utf-8,*jp*1 )
to-code ... ここで指定したコードでエンコードを行う(sjis,eucjp,utf-8)
http://practical-scheme.net/gauche/man/gauche-refj_75.html
http://practical-scheme.net/gauche/man/gauche-refj_76.html#g_t_00e6_0096_0087_00e5_00ad_0097_00e3_0082_00b3_00e3_0083_00bc_00e3_0083_0089_00e5_00a4_0089_00e6_008f_009b
モジュール、関数
- gauche.charconv
与えられたデータストリームの文字エンコーディングを変換するための手続き群を提供するモジュールで、関数open-input-conversion-portが含まれている
- open-input-conversion-port
あるコードのデータを読む入力ポートから、指定したコードで符号したデータを読み出せるポートを作成して返す
http://practical-scheme.net/gauche/man/gauche-refj_75.html
- open-input-string
入力文字列ポートを作って返す
http://practical-scheme.net/gauche/man/gauche-refj_58.html
- display/format/read-byte
http://www.geocities.jp/m_hiroi/func/abcscm07.html
http://karetta.jp/book-node/programming-gauche/197706
http://blog.livedoor.jp/mocoh/archives/568182.html