16文字化けし問題の原因と解決方法

1266 ワード


  • 発生原因:符号化と復号符号化が一致しない符号化:文字---符号化文字セット---バイナリ復号:バイナリ---復号文字セット---文字解決方法:
    package convertIO;
    
    import java.io.UnsupportedEncodingException;
    
    // , 
    public class Convert {
        public static void main(String[] args) 
                throws UnsupportedEncodingException {
            
            // utf-8( )
            //    byte---->char
            String str = " ";   
            
            //    char--->byte
            byte[] data = str.getBytes();
            
            // 
            System.out.println(new String(data));
        
            // 
            data = str.getBytes("gbk");
            
            // , 
            System.out.println(new String(data));
            
            // 
            byte[] data2 = " ".getBytes("gbk");
            
            // 
            str = new String(data2,"gbk");
            System.out.println(str);
        }
    
    }
    
    

  • バイト欠落による文字化けし
    package convertIO;
    
    public class Convert2 {
        public static void main(String[] args) {
            //    byte---->char
            String str = " ";   //utf-8
            
            //    char--->byte
            byte[] data = str.getBytes();
            
            // 
            // gbk, 4 3 
            System.out.println(new String(data,0,4));
        }
    
    }