分享

JAVA中的神奇现象

 凤舞天煌 2007-11-12
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
class FileOutputStreamTest
{
public static void main(String[]args)
{
     try
     {
      String str = "好好学习java";
      byte[] words = str.getBytes();
      OutputStream fos = new FileOutputStream("Test.txt");
   fos.write(words,4,4);
      System.out.println("Test文件已更新!");
      fos.close();
     }
     catch (IOException obj)
     {
      System.out.println("创建文件时出错");
     }
}
}
执行fos.write(words,4,4);方法之后Test.txt文件里面的内容是什么?你一定会说是“学习”吧,那就错了,事实上里面是两个【黑色的方块】,而且只有这两个字显示不出来,如果你把“学习”换成别的汉字就没有问题,神奇吧,懂JAVA的朋友可以试一下。
这让我想起了曾经的[联通]事件:
如果你的电脑操作系统是WIN2000或WINXP的话,那么:
1、在桌面上点右键,选择新建 ― 文本文档;
2、打开“新建 文本文档”,写入“联通”两字后保存退出;
3、重新打开“新建 文本文档”,看到什么了?
4、是不是刚刚录入的“联通”两字不见了,取而代之是个黑块。
======================================================================
这是什么原因?
我在网上查找了相关的资料,据说是微软操作系统的BUG.
记事本都会用自动用UTF-8编码保存(而非ANSI)。“联”的UTF-8编码是54 80。记事本在保存文件时虽然添加了FF FE的文件头,但是没有把“联”保存为54 80而是用了6A 00。
这是详细的解释:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多