gaucheノート  URLエンコード

wikipedia:URLエンコード

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


モジュール、関数

与えられたデータストリームの文字エンコーディングを変換するための手続き群を提供するモジュールで、関数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

*1:日本語のテキストのCESを、ISO2022-JP(-1,2,3), EUCJP, SHIFT_JIS または UTF-8の いずれかであるとして推測する。