java中編碼問題的處理方案
首先我使用的開發(fā)環(huán)境是Eclipse.創(chuàng)建一個(gè)Java Project默認(rèn)的編碼則為GBK,如圖:
下面便是具體代碼:
import java.io.UnsupportedEncodingException; public class Demo1 { public static void main(String[] args) throws UnsupportedEncodingException { String s = "我愛ABC"; byte[] bytes1 = s.getBytes("gbk");//不寫編碼,則使用平臺(tái)的默認(rèn)字符集將此 String 編碼為 byte序列,并返回byte[]. //s.getBytes(Charset charset) 使用給定的charset將此String編碼到byte序列; //返回的是一個(gè)byte[]字節(jié)數(shù)組 for(byte b: bytes1){ System.out.print(Integer.toHexString(b&0xff)+" "); //Integer.toHexString(int i)以十六進(jìn)制(基數(shù) 16)無符號(hào)整數(shù)形式返回一個(gè)整數(shù)參數(shù)的字符串表示形式 } //gbk編碼中文占有兩個(gè)字節(jié),英文占有一個(gè)字節(jié) System.out.println(); byte[] bytes2 = s.getBytes("utf-8"); for(byte b: bytes2){ System.out.print(Integer.toHexString(b&0xff)+" "); } //utf-8編碼 中文占有三個(gè)字節(jié),英文占有一個(gè)字節(jié) System.out.println(); //java是雙字節(jié)編碼 --->utf-16be >> 中文和英文都占有兩個(gè)字節(jié) byte[] bytes3 = s.getBytes("utf-16be"); for(byte b: bytes3){ System.out.print(Integer.toHexString(b&0xff)+" "); } /*當(dāng)你的字節(jié)序列是某種編碼時(shí),這個(gè)時(shí)候想把字節(jié)序列變成 *字符串,也需要用這種編碼方式,否則會(huì)出現(xiàn)亂碼 * */ System.out.println(); String str1 = new String(bytes3);//用項(xiàng)目默認(rèn)的編碼即(GBK編碼) ----->> bytes3在上面定義成“utf-16be”的編碼了,所以會(huì)出現(xiàn)亂碼 System.out.println(str1); System.out.println(); String str2 = new String(bytes3,"utf-16be"); System.out.println(str2); /* * 文本文件就是字節(jié)序列 * 可以是任意編碼的字節(jié)序列 * 如果我們?cè)谥形臋C(jī)器上直接創(chuàng)建文本文件,那么該文本文件只認(rèn)識(shí)ansi編碼 * */ } }
打印的結(jié)果:
總的來說,編碼必須對(duì)應(yīng),不然會(huì)出現(xiàn)亂碼。
- 深入解析Java中的編碼轉(zhuǎn)換以及編碼和解碼操作
- JAVA及相關(guān)字符集編碼問題研究分享
- 簡(jiǎn)潔實(shí)用的Java Base64編碼加密異常處理類代碼
- java自動(dòng)根據(jù)文件內(nèi)容的編碼來讀取避免亂碼
- java實(shí)現(xiàn)哈弗曼編碼與反編碼實(shí)例分享(哈弗曼算法)
- Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼
- 編碼實(shí)現(xiàn)從無序鏈表中移除重復(fù)項(xiàng)(C和JAVA實(shí)例)
- 解析關(guān)于java,php以及html的所有文件編碼與亂碼的處理方法匯總
- Java反轉(zhuǎn)字符串和相關(guān)字符編碼的問題解決
- 基于Java字符編碼的使用詳解
- Java在web頁面上的編碼解碼處理及中文URL亂碼解決
相關(guān)文章
如何在springboot中實(shí)現(xiàn)頁面的國際化
今天帶大家學(xué)習(xí)如何在springboot中實(shí)現(xiàn)頁面的國際化,文中有非常詳細(xì)的圖文解說及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析
這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)相關(guān)知識(shí)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11springboot對(duì)接微信支付的完整流程(附前后端代碼)
最近在做支付平臺(tái)的項(xiàng)目,承接公司業(yè)務(wù)系統(tǒng)與第三方支付平臺(tái)的對(duì)接任務(wù),主要涉及微信支付、支付寶支付以及理房通支付等第三方平臺(tái),這篇文章主要給大家介紹了關(guān)于springboot對(duì)接微信支付的完整流程,需要的朋友可以參考下2021-08-08Java實(shí)現(xiàn)解析并生成xml原理實(shí)例詳解
這篇文章主要介紹了Java實(shí)現(xiàn)解析并生成xml原理實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06idea設(shè)置@Author文件頭注釋的實(shí)現(xiàn)步驟
本文主要介紹了idea設(shè)置@Author文件頭注釋的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07如何在Spring Boot應(yīng)用程序中配置了兩個(gè)不同的SOAP Web服務(wù)端點(diǎn)
這篇文章主要介紹了如何在Spring Boot應(yīng)用程序中配置了兩個(gè)不同的SOAP Web服務(wù)端點(diǎn),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08spring security動(dòng)態(tài)配置url權(quán)限的2種實(shí)現(xiàn)方法
對(duì)于使用spring security來說,存在一種需求,就是動(dòng)態(tài)去配置url的權(quán)限,即在運(yùn)行時(shí)去配置url對(duì)應(yīng)的訪問角色。下面這篇文章主要給大家介紹了關(guān)于spring security動(dòng)態(tài)配置url權(quán)限的2種實(shí)現(xiàn)方法,需要的朋友可以參考下2018-06-06