URLEncoder

URLEncoder, URLDecoder を使うと簡単にURLエンコーディングができます。URLエンコーディングというのはapplication/x-www-form-urlencoded MIME 形式に変換することで、たとえば、<title>タイトル</title>という文字列をURLエンコーディングすると、%3Ctitle%3E%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%3C%2Ftitle%3Eとなります。

詳細はHTML仕様の17.13.4 Form content typesを参照してください。符号化にあたっては、次の規則に従います。

  1. [a-z][A-Z][0-9]は元のまま残す
  2. [.-*_]は元のまま残す
  3. 空白文字はプラス記号に変換する(‘ ‘→’+’)
  4. ほかのすべての文字はバイト値に変換され、%数値となる(“<“→”%3C”)

Javaでのサンプルプログラムは次のようになります。

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class UrlEncoderTest {
public static String createHtmlText() {
String text = “<html><head><title>タイトル</title></head><body>日本語</body></html>”;
return text;
}
public static void main(String[] args) {
String data = “日本語”;
String encoding = “Shift_JIS”;
String src = null;
try {
src = URLEncoder.encode(data, encoding);
String dst = URLDecoder.decode(src, encoding);
System.out.println(“data: “+data);
System.out.println(“src : “+src);
System.out.println(“dst : “+dst);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
data = createHtmlText();
encoding = “UTF-8”;
try {
src = URLEncoder.encode(data, encoding);
String dst = URLDecoder.decode(src, encoding);
System.out.println(“data: “+data);
System.out.println(“src : “+src);
System.out.println(“dst : “+dst);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}

実行結果は次の通り。

data: 日本語
src : %93%FA%96%7B%8C%EA
dst : 日本語
data: <html><head><title>タイトル</title></head><body>日本語</body></html>
src : %3Chtml%3E%3Chead%3E%3Ctitle%3E%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%3C%2Ftitle%3E%3C%2Fhead%3E%3Cbody%3E%E6%97%A5%E6%9C%AC%E8%AA%9E%3C%2Fbody%3E%3C%2Fhtml%3E
dst : <html><head><title>タイトル</title></head><body>日本語</body></html>
カテゴリー: Java

ra9

らくらく連絡網って便利そうだな。無料と書いてあるけどビジネス的にはどうやって成立させているんだろうと思ってよく見てみたら、広告がメールについてくるようだ。携帯の通信費はその分かかるわけだから微妙かも。幼稚園や小学校の連絡網でしょっちゅう連絡しあっている奥さん方には便利かも。まぁ、使ってみないとわからないですね。

カテゴリー: etc

PostgreSQL table attribute

PostgreSQLでカラム属性を見たいときは、つぎのようにすれば良い。ただし、table_nameは対象となるテーブルの名前。

select attname, atttypid, attlen
from pg_attribute
where attnum > 0
and attrelid = (select relfilenode from pg_class where relname = ‘table_name’)
order by attnum;

Mozilla FireFox security fix

FireFoxにまた脆弱性が発見されたようです。対策については、スラッシュドットのコメントから知ったのですが、Internationalized Domain Name(IDN)のサポートを停止すれば良いようです。こういう公開された対策情報は早く広めてあげた方が良いと思うので、引用しておきます。パッチもあるようですが、とりあえずパッチをあてていいかよくわからない場合は、こちらの対策をしておくと良いでしょう。

1. ロケーションバーに about:config と入力する
2. フィルタリング機能を使って network.enableIDN を呼び出す
3. Value を faulse にする(文字列をダブルクリックすれば値が変わります)

ちなみに、ロケーションバーへabout:pluginsとか入力するのは知っていたのですが、about:configとかは知りませんでした。ほかにも色々あるようです。