URL の encoding で少しはまった
URL の encoding で少しはまった。
* ruby では http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=URI によると
URI.encode(str[, unsafe])
URI 文字列をエンコードした文字列を返します。unsafe には、URI として指定できない文字を正規表現か文字列で指定します
(デフォルトは、定数 URI::UNSAFE
/[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/n
です)
* xfy では http://www.xfy.com/jp/manual/dev/developer/1.4/spec/reference_function.html#url-encode によると
function:url-encode 関数
エスケープ文字への変換対象となる文字は、次の文字を除くすべての文字です。
* アルファベット(a~z、A~Z)
* 数字(0~9)
* 第2引数で指定された文字列に含まれる文字
第2引数が省略された場合は、次の規則に従って変換されます。
* アルファベット(a~z、A~Z)、数字(0~9)は変換されません。
* URL区切り文字や、URLで利用できる記号(-_.*/:;!?$#&+=~@[])は変換されません。
* java では http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/net/URLEncoder.html によると
英数字文字の「a」から「z」、「A」から「Z」、および「0」から「9」は元のまま残す
特殊文字の「.」、「-」、「*」、および「_」は元のまま残す
空白文字「 」をプラス記号「+」に変換する
どれも default 動作が微妙に規則が異なっている。
一つの言語中で閉じた処理をしちるなら問題はないだろうが、異なる言語で一つのデータを使い回そうとすると
特殊な記号を含んだ URL があった場合にはまるのは必至だ。
java の API が一番 柔軟性がないので、普通の場合は java に合わせて ruby, xvcd では
第2パラメータを指定してつかうようにするのがいいか?
各種の web-service や RDB からの出力での URL encoding ってどうなっているかも気になるなぁ。
# こんなことでハマるとは想定外だった orz...
« ピックアップ: EDINET XBRLパイロット参加に当たって, スコット・アンブラー氏の講演を聞いて, etc... | トップページ | ピックアップ:TISの社内SNS事例, 「時をかける少女」DVD 発売2ヶ月で累計11万本, etc... »
この記事へのコメントは終了しました。
« ピックアップ: EDINET XBRLパイロット参加に当たって, スコット・アンブラー氏の講演を聞いて, etc... | トップページ | ピックアップ:TISの社内SNS事例, 「時をかける少女」DVD 発売2ヶ月で累計11万本, etc... »
コメント