String を ByteBuffer に変換してから、Java を使用して ByteBuffer から String に戻します。
import java.nio.charset.Charset;
import java.nio.*;
String babel = "obufscate thdé alphebat and yolo!!";
System.out.println(babel);
//Convert string to ByteBuffer:
ByteBuffer babb = Charset.forName("UTF-8").encode(babel);
try{
//Convert ByteBuffer to String
System.out.println(new String(babb.array(), "UTF-8"));
}
catch(Exception e){
e.printStackTrace();
}
最初に印刷された裸の文字列を出力し、次に array() にキャストされた ByteBuffer を出力します。
obufscate thdé alphebat and yolo!!
obufscate thdé alphebat and yolo!!
また、これは私にとって役に立ちました.文字列をプリミティブバイトに減らすと、何が起こっているのかを調べるのに役立ちます:
String text = "こんにちは";
//convert utf8 text to a byte array
byte[] array = text.getBytes("UTF-8");
//convert the byte array back to a string as UTF-8
String s = new String(array, Charset.forName("UTF-8"));
System.out.println(s);
//forcing strings encoded as UTF-8 as an incorrect encoding like
//say ISO-8859-1 causes strange and undefined behavior
String sISO = new String(array, Charset.forName("ISO-8859-1"));
System.out.println(sISO);
UTF-8 として解釈された文字列を出力し、次に ISO-8859-1 として再度出力します。
こんにちは
ããã«ã¡ã¯