代码之家  ›  专栏  ›  技术社区  ›  Mohammad Karmi

字符的utf16在转换为字节时有2个负数

  •  0
  • Mohammad Karmi  · 技术社区  · 6 年前
    
    
    import java.io.UnsupportedEncodingException;
    import java.util.Arrays;
    
    public class Main {
     public static void main(String[] args)
     {
      try 
      {
       String s = "s";
       System.out.println( Arrays.toString( s.getBytes("utf8") ) );
       System.out.println( Arrays.toString( s.getBytes("utf16") ) );
       System.out.println( Arrays.toString( s.getBytes("utf32") ) );
      }  
      catch (UnsupportedEncodingException e) 
      {
       e.printStackTrace();
      }
     }
    }
    
    

    慰问:

    
    [115]
    [-2, -1, 0, 115]
    [0, 0, 0, 115]
    

    这是怎么一回事?

    [-2, -1] - ???

    另外,我注意到,如果我这样做:

    
    String s = new String(new char[]{'\u1251'});
    System.out.println( Arrays.toString( s.getBytes("utf8") ) );
    System.out.println( Arrays.toString( s.getBytes("utf16") ) );
    System.out.println( Arrays.toString( s.getBytes("utf32") ) );
    

    慰问:

    
    [-31, -119, -111]
    [-2, -1, 18, 81]
    [0, 0, 18, 81]
    
    0 回复  |  直到 14 年前