字符集個人理解

編碼其實,就是二進制數,與字符的映射關係。

那麼,它只和二進制數和字符有關。
Java內存中的字符(字符串),都是Unicode編碼的。
所以,當二進制數是GBK編碼的時候,首先要用解碼器將GBK轉換成Unicode編碼,然後再保持到字符當中。
也就是說,應該先得到二進制數據:byte [] data = ...;
然後,生成字符串:String str = new String(data,"GBK");
這樣,這個字符串就可以正常顯示了。
如果,輸出的數據,要UTF-8編碼的,那麼,應該是這樣:byte [] outData = str.getBytes("UTF-*");
然後,out.write(outData);將數據寫入的IO當中。

不應該這種寫法:new String(str.getBytes("gbk"), "utf-8");
這種寫法,一般都是對字符數據編碼理解得不透徹,才這麼寫的。

編碼編的是二進制數據,編碼後,二進制數據(字節流或字節數組)會轉換成Java語言的字符(串)型的數據,供編程人員使用。

拿ajax來說,默認編碼是utf-8,我們不用管後端的項目編碼是什麼,只需要按照utf-8的格式來編碼即可:new String(str.getBytes(), "utf-8");

之前一直搞不清spring的字符集過濾器到底有什麼作用,現在明白了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章