日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java编码问题

發布時間:2023/12/15 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java编码问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

這個問題,好多人搞不清楚,那就從網上摘抄兩段回答過來,個人認為這兩位說清楚了問題所在。

--------------------------------------------------------------------------------------------

闡述1:

鏈接:http://www.iteye.com/problems/94345

問題:java 把gbk字符串轉為UTF8 的解決方案是什么?

回答:

呵呵,沒想到我的答案被評價為沒有價值的,sigh。?

好吧,看來不仔細說明不行。 程序員的讀代碼能力是很重要滴。?


首先,java在內存中是使用的雙字節字符unicode的編碼方式。?

每個char對應的是32位的整型。?

內存中對字符串操作其實不用考慮字符集。?

只有在讀取到內存中,和輸出時,需要考慮字符集轉換。?


如果源代碼中包含中文字符串,java編譯器會按照編譯時指定的字符集轉換到unicode。?

(不指定時,按當前操作系統的配置來)?


當一個java程序從外部獲取字符串時,使用Reader系列類,?

會按照默認或者指定的字符集讀取,然后轉換到unicode。?

也就是為啥我在讀文件時 指定了 Charset.forName("GBK")?

單純的InputStream類不能處理字符集。?


需要utf-8一般是為了輸出。有兩種方式,一種,使用Writer,內置了字符集轉換能力。?

選擇合適的,然后在構造函數中指定即可。(有Writer是往OutputStream輸出的,一下想不起名字了)?


還有一種就是,自己用String的getBytes(charset)方法,得到轉換過后的編碼的二進制數組,然后對這個數組處理。比如我的代碼中的FileOutputStream

-----------------------------------------------------------------------------------------------------

闡述2:

鏈接:http://www.zhihu.com/question/20361462

問題:java中GBK編碼格式轉成UTF8,用一段方法實現怎么做?

回答:

好吧,看來問的人和回答的人都不一定清楚什么是“編碼和編碼格式”,以及如何理解“java中字符串的編碼”;

首先明確幾點:

unicode是一種“編碼”,所謂編碼就是一個編號(數字)到字符的一種映射關系,就僅僅是一種一對一的映射而已,可以理解成一個很大的對應表格

GBK、UTF-8是一種“編碼格式”,是用來序列化或存儲1中提到的那個“編號(數字)”的一種“格式”;GBK和UTF-8都是用來序列化或存儲unicode編碼的數據的,但是分別是2種不同的格式; 他們倆除了格式不一樣之外,他們所關心的unicode編碼范圍也不一樣,utf-8考慮了很多種不同國家的字符,涵蓋整個unicode碼表,所以其存儲一個字符的編碼的時候,使用的字節長度也從1字節到4字節不等;而GBK只考慮中文——在unicode中的一小部分——的字符,的編碼,所以它算好了只要2個字節就能涵蓋到絕大多數常用中文(2個字節能表示6w多種字符),所以它存儲一個字符的時候,所用的字節長度是固定的;

上述2個概念不懂的請馬上google,下面不再贅述;我下面說說這個問題本身...的問題在哪里

首先java的string使用的編碼是unicode,但是,當string存在于內存中時(也就是當程序運行時、你在代碼中用string類型的引用對它進行操作時、也就是string沒有被存在文件中且也沒有在網絡中傳輸(序列化)時),是“只有編碼而沒有編碼格式的”,所以java程序中的任何String對象,說它是gbk還是utf-8都是錯的,gbk和utf-8是編碼格式而不是編碼,String在內存中不需要“編碼格式”(記住編碼格式是在存文件或序列化的時候使用的), 它只是一個unicode的字符串而已

所以java里面String是不帶編碼格式的,而String.toByteArray(charsetName)得到的byteArray是帶編碼格式的,格式就是你傳入的'charsetName',我們不妨把toByteArray的這個過程叫做“編碼”;另外,new String(byte[], charsetName)是把一個byte數組(帶編碼格式)以charsetName指定的編碼格式翻譯為一個不帶編碼格式的String對象,我們不妨把這個過程叫“解碼”

那么根據我揣測提問者的意圖,可能有2種問法是他真正想問的:

第一,如何把一個被錯誤地當作是gbk格式存儲的utf-8格式的文件里面讀出來的一段亂碼字符串還原回去(也就是說本來二進制數據是utf-8的,你用gbk來解碼它,得到的字符串是亂碼,現在想要還原回去)

第二種,如何把一個gbk文件轉化為utf-8文件

如果是第一種意圖那就:

public static void main(String... args) throws Throwable {

String errStr = "errStr";

System.out.println(recover(errStr));

}


public static String recover(String str) throws Throwable {

return new String(str.getBytes("GBK"), "UTF-8");

}

其中errStr就是亂碼字符串,按照相反的順序在編碼(用gbk)、解碼(用utf-8)回去,就能得到正確的字符串(其實不保證所有情況均能正確還原,只能說大部分都能,要看你在亂碼過程中是否有數據被丟失)


如果是第二種意圖,那就用InputStream以gbk格式將文件讀到內存里(表示為String),再將這個String以UTF-8編碼寫入目標文件里,具體請參考InputStream/OutputStream的api

---------------------------------------------------------------------

最后再贈送一個,哈哈:http://www.oschina.net/question/237198_127220

轉載于:https://my.oschina.net/jrrx/blog/353637

總結

以上是生活随笔為你收集整理的Java编码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情网络| 国产精品又黄又爽又色无遮挡 | 久草老司机 | www.色在线 | 成人精品国产免费网站 | 中文字幕永久视频 | 老司机精品在线 | 国产主播在线一区 | 欧美美女一区二区三区 | 很污很黄的网站 | 双性人妖互交localhost | 久久久91精品国产一区二区三区 | 中文字幕在线高清 | 国产福利视频一区二区三区 | 一本大道熟女人妻中文字幕在线 | 一区二区手机在线 | 青青草国产精品视频 | 综合激情五月婷婷 | 亚洲二区在线观看 | 黄色www视频 | 久久久久久国产精品 | 亚洲色图18p| 影音先锋资源av | 精品亚洲aⅴ无码一区二区三区 | 四虎新网站 | 午夜一区二区三区 | 亚洲高潮无码久久 | 欧美国产精品一区 | 国产伦精品一区二区三区网站 | 亚洲免费福利 | 亚洲成人黄 | 中文字幕在线视频一区 | 黄色三级图片 | 成人福利视频 | 久久久久久毛片 | 黄色网页网站 | 欧美一级一区二区三区 | 国产精品对白刺激久久久 | 理伦毛片 | 美女被叉叉的影院 | 国产精品88久久久久久妇女 | 毛片视| 老色批网站| www伊人网 | 真实偷拍激情啪啪对白 | 女性裸体视频网站 | www.夜色 | 亚洲一区二区三区在线播放 | 久久久精品国产 | av不卡一区二区 | 国产中年熟女高潮大集合 | 成人免费三级 | 欧美性久久久 | 亚洲精品国产一区 | 一级影片在线观看 | 国产a线 | 国产精品扒开腿做爽爽爽a片唱戏 | 午夜啪啪网站 | 黑人专干日本人xxxx | 国产精品久久久久久久无码 | 国产精品久久久精品三级 | 三级色网 | 亚洲精品国产精品乱码在线观看 | 亚洲免费a | 国产亚洲欧美精品久久久久久 | 欧美一区二区三区在线视频 | 波多野结衣亚洲 | 亚洲靠逼 | jizz在线免费观看 | 成人xxxx| 亚洲a网站 | 欧美综合一区 | 国产在线观看免费高清 | 97av视频 | 寡妇高潮一级视频免费看 | 岛国色图 | 豆花免费跳转入口官网 | 91av视频在线| 爱情岛论坛永久入址在线 | 国产欧美精品一区二区 | 中国黄色在线视频 | 亚洲无遮挡 | 欧美视频免费在线 | 久久午夜精品 | av中出 | 国产不卡二区 | 巨乳美女在线 | 波多野结衣黄色网址 | 欧美日韩久 | 337p日本欧洲亚洲鲁鲁 | 成人区视频 | 亚洲综合情 | 丁香六月色 | 伊人操 | 国语对白在线观看 | 一级黄色片视频 | 欧美做爰全过程免费看 | 91精品国产综合久久国产大片 | 夜夜草天天草 |