编程 - 初学者请教关于java编码的问题
黄舟
黄舟 2017-04-17 11:15:21
[Java讨论组]

很简答的的示例程序,大家看下

我的问题是,我不明白,文件的明明是0-50000这些数字,为什么文件打开以后,里面是各种各样的符号呢,有中文,英文,日文等等各种字符。
我能知道是unicode编码的原因,但是不是很清楚原理
请各位帮忙解释下,或者给个详细解释这个的链接之类的更好。

非常感谢!

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
PHPz
我来尝试回答一下,现学现卖 ^_^ (我使用 linux 可能不大一样)

先看文档中文,它有五个方法

/**
 * write(String str)
 * 写入字符串。
 * write(int oneChar)
 * 写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。用于支持高效单字符输出的子类应重写此方法。 
 * write(char[] buf)
 * 写入字符数组
 * write(String str, int offset, int count)
 * write(char[] buf, int offset, int count)
 */

用的是 write(int oneChar) 这一种,写入单个字符表,用计算器高位被忽略就是

  00000000|00110010   //50
1|00000000|00110010   //65536 + 50
-------------------

然后两者其实结果是一样的。过程如下,只看最后两段即可

import java.io.FileWriter;

/**
 * Created by star on 11/29/13.
 * write(char[] buf, int offset, int count)
 * write(String str)
 * write(int oneChar)
 * write(char[] buf)
 * write(String str, int offset, int count)
 */
public class Encode {
    public static void main (String [] args) {
        FileWriter fw = null;
        try {
//            *输出字符串"妳好"
//            fw = new FileWriter("/home/star/unicode.txt");
//            String a = "妳好";
//            fw.write(a);
//            fw.close();

//            *这里打印的不是50,而是50的16进制所代表的值「2」
//            fw = new FileWriter("/home/star/unicode.txt");
//            int a = 50;
//            fw.write(a);
//            fw.close();

//            *比16位高的位数被忽略。会打印相同的两个「2」
//            fw = new FileWriter("/home/star/unicode.txt");
//            fw.write(50);
//            fw.flush();
//            fw.write(65536 +50);
//            fw.flush();
//            fw.close();

//            *我想你要的结果是这样的吧 0x4e00 开始
            fw = new FileWriter("/home/star/unicode.txt");
            for (int a = 19968 ; a<19968 + 500;a++) {
                fw.write(a);
            }
            fw.close();

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("文件写入错误");
            System.exit(-1);
        }

    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号