java字節(jié)字符轉(zhuǎn)換流的操作詳解

本篇內(nèi)容主要講解“java字節(jié)字符轉(zhuǎn)換流的操作詳解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“java字節(jié)字符轉(zhuǎn)換流的操作詳解”吧!

寒亭網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

一 基本概念

1、認(rèn)識(shí)文本和文本文件

java的文本(char)是16位無符號(hào),是字符的unicode編碼(雙字節(jié)編碼)文件是byte byte byte 的數(shù)據(jù)序列文本文件是文本(char)序列按照某種編碼方案(utf-8,utf-16be,gbk)序列化為byte的存儲(chǔ)結(jié)果。

2、字符流(Reader Writer)---操作的都是文本文件

字符的處理:一次處理一個(gè)字符字符的底層任然是基本的字節(jié)序列

3、字符流的基本實(shí)現(xiàn)

InputStreamReader完成byte流解析未char流,按照編碼解析OutputStreamWriter 提供完成char流到byte流,按照編碼處理

4、UE編碼查看方法

UltraEdit-32的狀態(tài)欄可以顯示文件的編碼類型,詳細(xì)情況如下:

5、Myeclipse編碼查看方法

Project->Property->Resource

二 實(shí)例

package com.imooc.io;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class IsrAndOswDemo {    public static void main(String[] args)throws IOException {        FileInputStream in = new FileInputStream("e:\\javaio\\test2.txt");        InputStreamReader isr = new InputStreamReader(in,"utf-8");//默認(rèn)項(xiàng)目的編碼,操作的時(shí)候,要寫文件本身的編碼格式        FileOutputStream out = new FileOutputStream("e:\\javaio\\test1.txt");        OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");        /*int c ;        while((c = isr.read())!=-1){            System.out.print((char)c);        }*/        char[] buffer = new char[8*1024];        int c;        /*批量讀取,放入buffer這個(gè)字符數(shù)組,從第0個(gè)位置開始放置,最多放buffer.length個(gè)         返回的是讀到的字符的個(gè)數(shù)        */        while(( c = isr.read(buffer,0,buffer.length))!=-1){            String s = new String(buffer,0,c);            System.out.print(s);            osw.write(buffer,0,c);            osw.flush();        }        isr.close();        osw.close();    }}

三 運(yùn)行結(jié)果

中國1jd

四 說明

用UE創(chuàng)建的utf-8和用myeclipse創(chuàng)建的utf-8,文件大小不一樣,該程序是用myeclipse創(chuàng)建的utf-8進(jìn)行測(cè)試的。

五 utf-8無bom和utf-8什么區(qū)別

utf-8+bom比utf-8多了三個(gè)字節(jié)前綴:0xEF0xBB0xBF,有這三個(gè)字節(jié)前綴的文本或字符串,程序可以自動(dòng)判斷它為utf-8格式,并按照utf-8格式來解析文本或字符串,否則,一個(gè)文本或者字符串在未知編碼的情況下,需要按照字符編碼規(guī)范去一個(gè)個(gè)驗(yàn)證

六 utf-8編碼說明

https://baike.baidu.com/item/UTF-8/481798?fr=aladdin

七 編碼實(shí)例

打開”記事本“程序Notepad.exe,新建一個(gè)文本文件,內(nèi)容就是一個(gè)”嚴(yán)“字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8編碼方式保存。

然后,用文本編輯軟件UltraEdit中的”編輯-十六進(jìn)制函數(shù)“,觀察該文件的內(nèi)部編碼方式。

1)ANSI:文件的編碼就是兩個(gè)字節(jié)“D1 CF”,這正是“嚴(yán)”的GB2312編碼,這也暗示GB2312是采用大頭方式存儲(chǔ)的。2)Unicode:編碼是四個(gè)字節(jié)“FF FE 25 4E”,其中“FF FE”表明是小頭方式存儲(chǔ),真正的編碼是4E25。3)Unicode big endian:編碼是四個(gè)字節(jié)“FE FF 4E 25”,其中“FE FF”表明是大頭方式存儲(chǔ)。4)UTF-8:編碼是六個(gè)字節(jié)“EF BB BF E4 B8 A5”,前三個(gè)字節(jié)“EF BB BF”表示這是UTF-8編碼,后三個(gè)“E4B8A5”就是“嚴(yán)”的具體編碼,它的存儲(chǔ)順序與編碼順序是一致的。

到此,相信大家對(duì)“java字節(jié)字符轉(zhuǎn)換流的操作詳解”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前名稱:java字節(jié)字符轉(zhuǎn)換流的操作詳解
分享鏈接:http://muchs.cn/article4/geopoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、微信小程序、做網(wǎng)站、網(wǎng)站排名、響應(yīng)式網(wǎng)站外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)