リクエストパラメータの文字化け(2007/11/23)
request.setCharacterEncoding("Windows-31J");
String val = request.getParameter("name");
if(request.getMethod.equals("GET")){
val = new String(val.getBytes("8859_1"),"Windows-31J");
}
POSTのときのクエリ文字列が文字化けするかも、ということです。
javaのコンパイルについての考察(2007/07/24)
例えば、こういうクラスがあったときに、
public class HelloWorld {
public static void main(String args[]){
TypeTest.hello();
}
}
TypeTestクラスの実装によりHelloWorldのバイトコードは異なってきます。
(その1)
public class TypeTest {
static void hello(){
System.out.println("Hello");
}
}
(その2)
public class TypeTest {
static int hello(){
System.out.println("Hello");
return 0;
}
}
出来上がったクラスを
javap -v HelloWorld.class
してみれば一目瞭然。
TypeTestのhello()メソッドの引数を意識してコンパイルされていることがわかります。
ちなみに、HelloWorldクラスを下記のようにリフレクションを使って書き換えることで、
TypeTestのhello()メソッドに依存しないように書き換えることができます。
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class HelloWorld {
public static void main(String args[]) throws Exception
{
// TypeTest.hello();
Class cls = Class.forName("TypeTest");
Method method = cls.getMethod("hello",null);
Object ret = method.invoke(cls, null);
}
}
※helloメソッドをpoblicにしないと駄目でしたorz
以下は参考にさせていただいた、もしくは関係するかも、なリンク集
クラスファイルのバージョンについてまとまっている
eclipseでのコンパイルについて
eclipseコンパイラ調査報告書、eclipseエディタ調査報告書(eclipse2.1ベース)
JREがあればeclipseは動く。eclipseが動けば、ecilpseのコンパイラでコンパイルできる。
最終更新:2007年11月23日 15:46