首页 > 其他分享 >字符集(ASCII,GBK,Unicode)

字符集(ASCII,GBK,Unicode)

时间:2024-04-01 21:32:51浏览次数:30  
标签:java String io read GBK Unicode import ASCII public

一、编码和解码:

图片来自哔站黑马程序员

代码演示:

package a02charstreamdemo;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class charStreamDemo1 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //1.编码
        String str="ai你哟";
        //注意:idea默认的是UTF-8:一个英文一个字节,一个中文3个字节
        //如果用的是eclipse默认的是jbk:一个英文一个字节,一个中文2个字节
        byte[] bytes1 = str.getBytes();
        System.out.println(Arrays.toString(bytes1));//[97, 105, -28, -67, -96, -27, -109, -97]

        byte[] bytes2 = str.getBytes("GBK");//GBK大写小写都可以
        System.out.println(Arrays.toString(bytes2));//[97, 105, -60, -29, -45, -76]

        //2.解码
        String str2=new String(bytes1);
        System.out.println(str2);
        String str3=new String(bytes1,"GBK");
        System.out.println(str3);
    }
}

运行结果:

二、FileReader读取文件:

方法:

public int read()--------->读取数据,读到末尾返回-1

public int read(char[] buffer)--------->读取多个数据,读到末尾返回 -1

细节1:按字节进行读取,遇到中文,一次读多个字节,读取后解码,返回一个整数

细节2:读到文件末尾了,read方法返回-1

利用空参read方法读取数据代码演示:
     package a02charstreamdemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class charStreamDemo2 {
    public static void main(String[] args) throws IOException {
        //1.创建对象并关联本地文件
        FileReader fr=new FileReader("Test\\a.txt");
        //2.读取数据 read()
        //细节:read()默认也是一个字节一个字节读取的,如果遇到中文就会一次读取多个
        //在读取之后,方法的底层还会进行解码并转成十进制,最终把这个十进制作为返回值
        //这个十进制的数据也表示在字符集是那个的数字
        //英文:文件里面二进制数据 01100001
        //     read方法进行读取,解码并转成十进制97
        //中文:文件里面二进制数据 11100110 10110001 10001001
        //     read方法进行读取,解码并转成十进制27721
        //如果想看到中文汉字,就是把这些十进制数据,再进行强转就可以了
        int ch;
        while((ch=fr.read())!=-1){
            System.out.print((char)ch);
        }
        fr.close();
    }
}

运行结果:

 

带参读取代码演示:
package a02charstreamdemo;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class charStreamDemo3 {
    public static void main(String[] args) throws IOException {
       //1.创建对象并关联本地文件
        FileReader fr=new FileReader("Test\\a.txt");
        //2.读取数据
        char[] chars=new char[2];
        int len;
        //read(chars)读取数据、解码、强转三步合并了,把强转之后的字符放到数组当中
        //空参的read方法+强制类型转换
        while ((len=fr.read(chars))!=-1){
            //把数组中的数据变成字符串在进行打印
            System.out.print(new String(chars,0,len));
        }
        fr.close();
    }
}

运行结果:

 

三、FileWrite写出数据

1.FileWriter构造方法

2.FileWriter成员方法:

FileWriter书写细节:

①创建字符输出流对象

细节1:参数是字符串表示的路径或者File对象都是可以的

细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的

细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关

②写数据

细节:如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符

③释放资源

代码演示:

package a02charstreamdemo;

import java.io.FileWriter;
import java.io.IOException;

public class charStreamDemo4 {
    public static void main(String[] args) throws IOException {
        FileWriter fw=new FileWriter("Test\\a.txt",true);
        char[] chars={'a','b','c','d','我'};
        // fw.write("鹿晗真帅!!!");
        fw.write(chars);

        fw.close();
    }
}

运行结果:

 

标签:java,String,io,read,GBK,Unicode,import,ASCII,public
From: https://blog.csdn.net/TNTxd/article/details/137233318

相关文章

  • ASCII编码的全面介绍
    1.ASCII编码的定义和历史ASCII(AmericanStandardCodeforInformationInterchange)是一种用于将文本字符转换为数字编码的标准,最初由美国国家标准协会(ANSI)制定。ASCII编码使用7位或8位二进制数表示128个字符,包括大小写字母、数字、标点符号和控制字符。ASCII编码是计算机领......
  • C语言中char字符型数据的存取形式:ASCII码之间的转换
    unsignedcharchannelNum=49;则编译器会将ASCII码49存入变量channelNum,实际channelNum表示字符1,所以下次如果以%c形式打印出来,则输出1。e.g:查看代码unsignedcharchannelNum=49;#include"bsp_seg.h"#include"bsp_Init.h"//------------------------------------//将s......
  • Unicode编码解码的全面介绍
    1.Unicode的起源和发展Unicode是一个国际标准,旨在统一世界上所有文字的表示方式。它最初由Unicode协会创立,解决了不同字符集之间的兼容性问题。Unicode的发展经历了多个版本,每个版本都增加了新的字符和特性,以适应不断增长的全球化需求。Unicode编码解码|一个覆盖广泛主题......
  • java 16进制转换为ASCII
    /***16进制转换为ASCII**@parambytes源数据*@paramoffset偏移量*@paramlength数据长度*@return{@linkString}*/publicStringconvertHexToAscii(byte[]bytes,intoffset,intlength){StringBuilders......
  • javascript解析unicode字符,替换成正常字符
    开始使用正则表达式来匹配unicode字符以及html的特殊字符,比如空格,引号等。后面发现可以直接使用DOMParser进行转换,更加方便。需要先创建一个DOMParser对象,然后通过domParser对象使用parseFromString来进行解析,这样会把字符串中的Unicode和html特殊字符转换成正常显示的字符了。......
  • Arduino RP2040 + SSD1306 I2C OLED +LittleFS存储GBK字库实现中文显示
    ArduinoRP2040+SSD1306I2COLED+LittleFS存储GBK字库实现中文显示......
  • Qt warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为
    Qtwarning:C4819:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为Unicode格式以防止数据丢失Qt导入其他电脑上开发的项目后,出现这种警告:Qtwarning:C4819:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为Unicode格式以防止数据丢失......
  • Unicode、UTF-8、UTF-16
    文章转载自https://zhuanlan.zhihu.com/p/427488961下面两个链接也可以看看https://learn.microsoft.com/en-us/dotnet/standard/base-types/character-encoding-introductionhttps://symbl.cc/en/unicode/table/#hangul-syllables<imgsrc="https://pic3.zhimg.com/v2-7bf25......
  • 基本操作之——Unicode编码
    自版本18.11后,支持UTF-81.字符转Unicode码tuple_ord('s',Ord)dev_clear_window()dev_disp_text('\'s\'的Unicode码为'+Ord,'window','center','center','black','box_color','#00ffffc0......
  • 技术实践|数据迁移中GBK转UTF8字符集问题分析
    导语:在国产化创新的大背景下,数据库迁移项目逐渐增多,在数据库迁移过程中,源数据库和目标数据库字符集有时会不同,这时如何进行字符集转换则成为了一个重要的问题,同时在转换过程中还需要确保数据的完整性和一致性。 字符集转换算法是一个复杂的领域,因此各个操作系统和库实现可能会......