コーディングとデコード

2204 ワード

 

public class SringCodeDemo {
public void print(byte bs[]){
for(byte b:bs){
System.out.print(b+"");
}
System.out.println();
}
@Test//コード-----コードテーブルに1文字のコード値を検出
public void t1() throws IOException{
String str=「中国」
byte bs[]=str.getBytes("utf-8");
print(bs);
}
@Test//デコード----コードによって文字に値する
public void t2() throws IOException{
byte bs[]={-28,-72,-83,-27,-101,-67 };
//String str=new String(bs);//デフォルトのエンコードはコンソールのエンコード「gbk」出力が文字化けします
String str = new String(bs,"utf-8");
System.out.println(str);
}
@Test//コードミスは修正できません
public void t3() throws IOException{
//送信者:文字列をバイト配列に変換
String str=「中国」
byte bs[]=str.getBytes("iso8859-1");
print(bs);
//受信者:バイト配列を文字列に変換する
String str2=new String(bs);
System.out.println(str2);
}
@Test//復号エラーは修正できます
public void t4() throws IOException{
//ブラウザ:文字列をバイトデータbs[]に変換して送信
String str=「中国人」
byte bs[]=str.getBytes("utf-8");
print(bs);
//tomcat:bs[]を受け取り、「iso 8859-1」コードテーブルで復号し、s 1---乱符号化を得る
String str2=new String(bs,"iso8859-1");
System.out.println(str2);
////////////////////////////////////////////
/*servletで文字化けしを行います:文字化けしs 1からiso 8859-1まで
*コードテーブル元のコードbs[]を反検出し、正しいコードテーブルで正しい中国語文字列を解く
*/
byte bs2[]=str2.getBytes("iso8859-1");
String str3=new String(bs2,"utf-8");
System.out.println(str3);
}
//「連通」問題---文書に連通を書くと文字化けしてしまう
@Test
public void t5() throws Exception{
String str=「連通」
byte bs[]=str.getBytes("gbk");
for(byte b:bs){
System.out.print(Integer.toBinaryString(b&0xff)+"");//(Integer.toBinaryString(b&0 xff)証明書をバイナリにプログラミング
//後ろの8ビットを保持し、1つのfは4ビットを表す
}
/*1)1バイトのシンボルに対して、バイトの1番目のビットは0に設定され、後の7ビットはこのシンボルのunicodeコードである.
*したがって、UTF-8符号化は、英字ではASCII符号と同じである.
*2)nバイトの符号(n>1)については、1バイト目の先頭nビットを1とし、
*n+1位は0、後バイトの上位2位は一律10とする.
*残りの言及されていないバイナリビットは、すべてこの記号のunicodeコードです.
    **/
//1000001 10101100 11001101 10101000その符号化方式はutf-8の符号化方式を満たすため文字化けしが発生する
}
}