<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java on 两点之间</title><link>https://yuehei.37net.com/category/java/</link><description>Recent content in Java on 两点之间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 07 Jan 2013 07:55:02 +0000</lastBuildDate><atom:link href="https://yuehei.37net.com/category/java/index.xml" rel="self" type="application/rss+xml"/><item><title>java中char,unicode</title><link>https://yuehei.37net.com/2013/01/java_charunicode/</link><pubDate>Mon, 07 Jan 2013 07:55:02 +0000</pubDate><guid>https://yuehei.37net.com/2013/01/java_charunicode/</guid><description>&lt;pre class="brush:java;"&gt;char c = &amp;#39;张&amp;#39;;
 byte b[] = new byte[3];
 b[0] = (byte) ((c &amp; 0xFF0000) &amp;gt;&amp;gt; 16); 
 b[1] = (byte) ((c &amp; 0x00FF00) &amp;gt;&amp;gt; 8); 
 b[2] = (byte) (c &amp; 0x0000FF);
 System.out.println(Arrays.toString(b));
 System.out.println(Arrays.toString(new Character(c).toString().getBytes("UNICODE")));&lt;/pre&gt;

 &lt;blockquote&gt;
 &lt;p&gt;输出：&lt;/p&gt;
&lt;p&gt;[0, 95, 32]&lt;br&gt;
[-2, -1, 95, 32]&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;“张”的code point：U+5F20，可以看出java内部char使用的是双字节来存储unicode，这样的话，除了BPM，其它其它辅助平面里面的字符是没有办法直接使用，只能当成byte来处理。但是，当我显式获得字符的unicode的时候却是4个字节，看情况应该是ucs4，但是高16位却是-2，-1而不是0，我试了一下其它的字也都是这样。记一下这个问题。&lt;/p&gt;
&lt;p&gt;文档：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8#Unicode_.E7.BC.96.E7.A0.81.E8.A1.A8" target="_blank" rel="nofollow" &gt;&lt;a class="link" href="http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8#Unicode_.E7.BC.96.E7.A0.81.E8.A1.A8" target="_blank" rel="noopener"
 &gt;http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8#Unicode_.E7.BC.96.E7.A0.81.E8.A1.A8&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;update: &lt;span style="font-size: 13px;"&gt;显式&lt;/span&gt;也是双字节，输出的4个字，其中前两个字节-2， -1就是oxFEFF，是个BOM头。。。&lt;/p&gt;
&lt;pre class="brush:java;"&gt;System.out.println(Arrays.toString(new String("张张").getBytes("UNICODE")));&lt;/pre&gt;

 &lt;blockquote&gt;
 &lt;p&gt;[-2, -1, 95, 32, 95, 32]  只输出了一次BOM头&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;BOM：&lt;a href="http://baike.baidu.com/view/126558.htm#sub5073178" target="_blank" rel="nofollow" &gt;&lt;a class="link" href="http://baike.baidu.com/view/126558.htm#sub5073178" target="_blank" rel="noopener"
 &gt;http://baike.baidu.com/view/126558.htm#sub5073178&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>