JAVA 23 字符编码问题

gbk 两个字节。

转换流。

使用转换流的时候可以指定码表。

InputStreamReader in = new InputStreamReader(new FileInputStream("abc.txt"),"utf-8");//以utf-8形式读取文本文件

OutStreamWrtier out = new OutStreamWriter(new FileOutputStrem("abc.txt"),"utf-8")‘//以utf-8编码写入文件。

编码:

字符串变字节数组

解码:

字节数组变字符串

String-->byte[]:str.getBytes(charserName)

byte-->String:new String(byte[],charsetName)

举例:

import java.io.*;

import java.util.*;

public class Test {

public static void main(String[] args) throws IOException

{

String s="你好啊";

byte [] b1 = s.getBytes("GBK");

sop(Arrays.toString(b1));

String s1 = new String(b1,"GBK");

String s2 = new String(b1,"iso8859-1"); //换成utf-8就不行,因为utf-8和gbk都支持中文

sop(s1);

sop(s2);

byte [] b2 = s2.getBytes("iso8859-1");

String s3 = new String(b2,"gbk");

sop(s3);

}

public static void sop(Object o)

{

System.out.println(o);

}

}

综合练习:

/*

有五个学生,每个学生有3门课的成绩,

从键盘输入以上数据(包括姓名,三门课成绩),

输入的格式:如:zhagnsan,30,40,60计算出总成绩,

并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。

1,描述学生对象。

2,定义一个可操作学生对象的工具类。

思想:

1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。

2,因为学生有很多,那么就需要存储,使用到集合。因为要对学生的总分排序。

所以可以使用TreeSet。

3,将集合的信息写入到一个文件中。

*/

import java.io.*;

import java.util.*;

public class Test {

public static void main(String[] args) throws IOException

{

InputStream in =System.in;

BufferedReader bufr= new BufferedReader(new InputStreamReader(in));

TreeSet<Student> ts = new TreeSet<Student>();

while(true)

{

String line = bufr.readLine();

if(line.equals("over"))

break;

else

{

String lines [] =line.split(" ");

String a=lines[0];

int b = Integer.parseInt(lines[1]);

int c = Integer.parseInt(lines[2]);

int d = Integer.parseInt(lines[3]);

ts.add(new Student(a,b,c,d));

}

}

BufferedWriter fw = new BufferedWriter(new FileWriter("d:\\STUDENT.TXT"));

Iterator<Student> it = ts.iterator();

while(it.hasNext())

{

Student st=it.next();

fw.write(st.name);

fw.write(" ");

fw.write(Integer.toString(st.yuwen));

fw.write(" ");

fw.write(Integer.toString(st.shuxue));

fw.write(" ");

fw.write(Integer.toString(st.yingyu));

fw.write(" ");

fw.write(Integer.toString(st.total));

fw.newLine();

}

fw.close();

}

public static void sop(Object o)

{

System.out.println(o);

}

}

class Student implements Comparable

{

String name;

int yuwen;

int shuxue;

int yingyu;

int total;

Student(String name,int yuwen,int shuxue,int yingyu)

{

this.name=name;

this.yuwen=yuwen;

this.shuxue=shuxue;

this.yingyu=yingyu;

total=yuwen+shuxue+yingyu;

}

public int compareTo(Object stu)

{

Student st = (Student)stu;

return this.total-st.total;

}

}

时间: 2024-08-02 00:50:34

JAVA 23 字符编码问题的相关文章

java语言字符编码问题

上代码 import java.io.*; public class EncodingDemo { public static void main(String[] args) { System.getProperties().list(System.out); try { FileWriter fw=new FileWriter("F:\\workspace\\JavaPrj\\test.txt"); fw.write("小超是个好孩子!"); fw.close(

java/mysql字符编码

碰到java/mysql字符编码问题,后来发现是utf-8编码相关问题, 最开始怀疑是在java springmvc相关框架处理中出现的错误,花费了很多时间去查找.这是思维的狭隘处,应该在整理理一遍,排除变量的方式,了解问题在哪. 幸好有另一台测试机及数据库,在该机器上部署的没有问题. 定位在本机的数据库上. 参考http://my.oschina.net/linland/blog/32525 http://blog.csdn.net/zhaozetu/article/details/86813

JAVA中文字符编码问题

JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用中.网上的分析文章和解决方案都很多,但总是针对某些特定情况的.很多次遇到乱码问 题后, 经过极为辛苦的调试和搜索资料后终于解决,满以为自己已经掌握了对付这些字符乱码怪兽的诀窍.可当过段时间,换了个应用或换了个环境,又会碰到那讨厌的火 星文,并再次无所适从.于是下决心好好整理一下中文字符编码问题,以方便自己记忆,也为其他程序员兄弟们提供一份参考. 首先要了解JAVA处理字符的原理.JAVA使用UNICODE来存储字符数据,处理字符时通常有

JAVA基础——字符编码

字符编码 一.概述 InputStreamReader OutputStreamWriter 字符转换流是字符流与字节流转换的桥梁,同时加入了编码转换. 二.编码表的由来 计算机只能识别二进制数据,早期由来是电信号: 为了方便应用计算机,识别各个国家的文字: 就将各个国家的文字用数字来表示,并一一对应,形成一张表,这就是编码表. 三.常见的编码表 注意: 1.Java语言char类型使用的是Unicode 2.UTF-8每一个字节的开头都加有标识头,加完后很容易区分.UTF-8中汉字用3个字节表

java基础----&gt;java中字符编码问题(一)

这里面对java中的字符编码做一个总结,毕竟在项目中会经常遇到这个问题. 文件的编码格式 一.关于中文的二进制字节问题 public static String CHARSET_TEXT = "我爱LL"; // 打印字节的16进制表示 private void printBinarys(byte[] buffer) { for (byte b : buffer) { System.out.print(Integer.toHexString(b & 0xff) + "

Java中字符编码和字符串所占字节数 .

首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~127整数之间的字符映射,unicode向下兼容ASCII.而Java采用unicode来表示字符,一个中文或英文字符的unicode编码都占2个字节,但如果采用其他编码方式,一个字符占用的字节数则各不相同. 在 GB 2312 编码或 GBK 编码中,一个英文字母字符存储需要1个字节,一个汉字字符存储

关于Java的字符编码

package 测试想法的小示例代码; import java.io.CharArrayWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.Arrays; public class 关于字符串转码 { private static String printByteArray(byte[] byteArray) { String javaForm = "J

Java IO4:字符编码

前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流, 那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概念,因此这边文章就专门详细写一下字符编码,具体 的网上有很多,但本文目的是尽量讲清楚各种编码方式的作用,个人认为,不求.也没有必要对字符编码理解地多么深入. 字符集和字符编码 第一个概念就是字符集和字符编码之间的区别: 1.字符集(charset) 字符集指的是一个系统支持的所有抽象字符的集合.字符是各种文

[原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------