Java代码 收藏代码
  1. os1 = new BufferedOutputStream(new FileOutputStream(f));  

  2. byte[] bom={-1, -2};  

  3. os1.write(bom);  

  4. os1.write("测试".getBytes("UTF-16LE"));  


JAVA内部使用的unicode是UTF-16BE的,当上面的getBytes中的字符集指定为:
 UTF-16或unicode时,文件输出为UTF-16BE,而且本件内包含两个字节的BOM(Byte Order Marker)信息。
  UTF-16BE或UTF-16LE时,文件输出为分别为UTF-16BE和UTF-16LE,但文件内不包含BOM信息。
  当NODEPAD(记事本)打开文件时会自己判断BOM信息,来以合适的方式打开文件,其中它里面的unicode就是UTF-16LE,unicode big endian就是UTF-16BE。
  所以,为了记事本显示为unicode,需要人为的加入BOM信息,如上面的:
Java代码 收藏代码
  1. byte[] bom={-1, -2};  

  2. os1.write(bom);