精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java編碼問題完全解決方案

開發 后端
本文介紹了Java編碼是怎么回事,以及一些中文編碼的常見問題及解決方案。對于Java語言來說,在其內部使用的是UCS2編碼(2個字節的Unicode編碼)。這種編碼并不屬于某個語系的語言編碼,它實際上是一種編碼格式的世界語。

一、Java編碼是怎么回事?

對于使用中文以及其他非拉丁語系語言的開發人員來說,經常會遇到字符集編碼問題。對于Java語言來說,在其內部使用的是UCS2編碼(2個字節的Unicode編碼)。這種編碼并不屬于某個語系的語言編碼,它實際上是一種編碼格式的世界語。在這個世界上所有可以在計算機中使用的語言都有對應的UCS2編碼。

正是因為Java采用了UCS2,因此,在Java中可以使用世界上任何國家的語言來為變量名、方法名、類起名,如下面代碼如下:

  1. class 中國  
  2. {  
  3.     public String 雄起()  
  4.     {  
  5.          return "中國雄起";  
  6.     }  
  7. }  
  8.  
  9. 中國 祖國 = new 中國();  
  10. System.out.println(祖國.雄起());  

哈哈,是不是有點象“中文編程”。實際上,也可以使用其他的語言來編程,如下面用韓文和日文來定義個類:

  1. class 수퍼맨  
  2. {  
  3.     public void スーパーマン() {  }  

實際上,由于Java內部使用的是UCS2編碼格式,因為,Java并不關心所使用的是哪種語言,而只要這種語言在UCS2中有定義就可以。

在UCS2編碼中為不同國家的語言進行了分頁,這個分頁也叫“代碼頁”或“編碼頁”。中文根據包含中文字符的多少,分了很多代碼頁,如cp935、cp936等,然而,這些都是在UCS2中的代碼頁名,而對于操作系統來說,如微軟的windows,一開始的中文編碼為GB2312,后來擴展成了GBK。其實GBK和cp936是完全等效的,用它們哪個都行。

二、Java編碼轉換

上面說了這么多,在這一部分我們做一些編碼轉換,看看會發生什么事情。

先定義一個字符串變量:

  1. String gbk = "中國"// “中國”在Java內部是以UCS2格式保存的  

用下面的語言輸出一定會輸出中文:

  1. System.out.println(gbk); 

實現上,當我們從IDE輸入“中國”時,用的是java源代碼文件保存的格式,一般是GBK,有時也可是utf-8,而在Java編譯程序時,會不由分說地將所有的編碼格式轉換成utf-8編碼,讀者可以用UltraEdit或其他的二進制編輯器打開上面的“中國.class”,看看所生成的二進制是否有utf-8的編碼(utf-8和ucs2之間的轉換非常容易,因為utf-8和ucs2之間是用公式進行轉換的,而不是到代碼頁去查,這就相當于將二進制轉成16進制一樣,4個字節一組)。如“中國”的utf-8編碼按著GBK解析就是“涓  浗”。如下圖所示。

utf-8編碼按著GBK解析 

如果使用下面的語言可以獲得“中國”的utf-8字節,結果是6(一個漢字由3個字節組成)

  1. System.out.println(gbk.getBytes("utf-8").length); 

下面的代碼將輸出“涓  浗”。

  1. System.out.println(new String(gbk.getBytes("utf-8"), "gbk"));     

由于將“中國“的utf-8編碼格式按著gbk解析,所以會出現亂碼。

如果要返回中文的UCS2編碼,可以使用下面的代碼:

  1. System.out.println(gbk.getBytes("unicode")[2]);  
  2.  
  3. System.out.println(gbk.getBytes("unicode")[3]);  

前兩個字節是標識位,要從第3個字節開始。還有就是其他的語言使用的編碼的字節順序可能不同,如在C#中可以使用下面的代碼獲得“中國“的UCS2編碼:

  1. String s = "中";  
  2.  
  3. MessageBox.Show(ASCIIEncoding.Unicode.GetBytes(s)[0].ToString());  
  4.  
  5. MessageBox.Show(ASCIIEncoding.Unicode.GetBytes(s)[1].ToString());  

使用上面的java代碼獲得的“中“的16進制UCS2編碼為4E2D,而使用C#獲得的相應的ucs2編碼為2D4E,這只是C#和Java編碼內部使用的問題,并沒有什么關系。但在C#和Java互操作時要注意這一點。

如果使用下面的java編碼將獲得16進制的“中”的GBK編碼:

  1. System.out.println(Integer.toHexString(0xff & xyz.getBytes("gbk")[0]));  
  2.  
  3. System.out.println(Integer.toHexString(0xff & xyz.getBytes("gbk")[1]));  

“中”的ucs2編碼為2D4E,GBK編碼為D6D0

讀者可訪問如下的url自行查驗:

http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT

三、Java編碼相關的屬性文件

Java中的屬性文件只支持iso-8859-1編碼格式,因此,要想在屬性文件中保存中文,就必須使用UCS2編碼格式("uxxxx),因此,出現了很多將這種編碼轉換成可視編碼和工具,如Eclipse中的一些屬性文件編輯插件。

實際上,"uxxxx編碼格式在java和C#中都可以使用,如下面的語句所示:

  1. String name= ""u7528"u6237"u540d"u4e0d"u80fd"u4e3a"u7a7a" ;  
  2.  
  3. System.out.println(name);  

上面代碼將輸出“用戶名不能為空”的信息。將"uxxxx格式顯示成中文非常簡單,那么如何將中文還原成"uxxxxx格式呢?下面的代碼完成了這個工作:

  1. String ss = "用戶名不能為空";  
  2. byte[] uncode = ss.getBytes("Unicode");  
  3. int x = 0xff;  
  4. String result ="";  
  5. for(int i= 2; i <  uncode.length; i++)  
  6. {  
  7.     if(i % 2 == 0) result += "\\u";  
  8.     String abc = Integer.toHexString(x & uncode[i]);              
  9.     result += abc.format("%2s", abc).replaceAll(" ""0");                 
  10. }  
  11. System.out.println(result); 

上面的代碼將輸出如下結果:

\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a

好了,現在可以利用這個技術來實現一個屬性文件編輯器了。

四、Web中的Java編碼問題

大家碰到最多的編碼問題就是在Web應用中。先讓我們看看下面的程序:

  1. < !--  main.jsp  --> 
  2.  
  3.   < %@ page language="java"  pageEncoding="utf-8"%> 
  4.  
  5.   < html> 
  6.       < head> 
  7.  
  8.       < /head> 
  9.  
  10.       < body> 
  11.           < form action="servlet/MyPost" method="post"> 
  12.               < input type="text" name="user" /> 
  13.               < p/> 
  14.               < input type="submit"  value="提交"/> 
  15.           < /form> 
  16.  
  17.       < /body> 
  18.   < /html> 

下面是個Servlet:

  1. package servlet;  
  2.  
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.  
  10. public class MyPost extends HttpServlet  
  11. {  
  12.  
  13.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  14.             throws ServletException, IOException  
  15.     {  
  16.         String user = request.getParameter("user");  
  17.         System.out.println(user);  
  18.     }  
  19. }  

如果中main.jsp中輸入中文后,向MyPost提交,在控制臺中會輸出“中国”,一看就是亂碼。如果將IE的當前編碼設成其他的,如由utf-8改為gbk,仍然會出現亂碼,只是亂得不一樣而已。這是因為客戶端提交數據時是根據瀏覽器當前的編碼格式來提交的,如瀏覽器當前為gbk編碼,就以gbk編碼格式來提交。 這本身是不會出現亂碼的,問題就出在Web服務器接收數據的時候,HttpServletRequest在將客戶端傳來的數據轉成ucs2碼上出了問題。在默認情況下,是按著iso-8859-1編碼格式來轉的,而這種編碼格式并不支持中文,所以也就無法正常顯示中文了,解決這個問題的方法是用和客戶端瀏覽器當前編碼格式一致的編碼來轉換,如果是utf-8,則在doPost方法中應該用以下的語句來處理:

  1. request.setCharacterEncoding("utf-8"); 

為了對每一個Servlet都起作用,可以將上面的語句加到filter里。

另外,我們一般使用象MyEclipse一樣的IDE來編寫jsp文件,這樣的工具會根據pageEncoding屬性將jsp文件保存成相應的編碼格式,但如果要使用象記事本一樣的簡單的編輯器來編寫jsp文件,如果pageEncoding是utf-8,而在默認時,記事本會將文件保存成iso-8859-1(ascii)格式,但在myeclipse里,如果文件中有中文,它是不允許我們保存成不支持中文的編碼格式的,但記事本并不認識jsp,因此,這時在ie中就無法正確顯示出中文了。除非用記事本將其保存在utf-8格式。如下圖:

用記事本將其保存在utf-8格式 

【編輯推薦】

  1. 使用Java截取字符串的方法
  2. 實現Java中對象比較的兩個方法
  3. 初學Java多線程:使用Synchronized塊同步方法
  4. 初學Java多線程:使用Synchronized關鍵字同步類方法
  5. 初學Java多線程:從線程返回數據的兩種方法
責任編輯:yangsai 來源: 真的有外星人嗎
相關推薦

2009-10-29 13:54:33

遠程接入解決方案

2010-05-28 19:39:28

MySQL 編碼轉換

2024-05-09 15:00:38

Python編碼開發

2009-09-28 11:14:15

2010-05-17 09:49:46

MySQL中文問題

2011-03-02 14:56:56

FileZilla425問題

2019-10-08 16:05:19

Redis數據庫系統

2010-05-10 16:15:34

2025-01-15 08:49:27

2023-10-16 16:08:42

工業 4.0物聯網邊緣計算

2015-05-12 16:31:22

Elasticsear開源分布式搜索引擎

2012-05-09 10:08:41

跨機房

2010-05-31 12:38:48

Nagios中文

2022-03-31 10:25:20

物聯網工業 4.0大數據分析

2021-01-12 11:02:56

云計算云存儲技術云開發

2021-01-12 11:13:11

云備份云原生云平臺

2024-11-08 13:47:35

中文亂碼配置

2018-12-03 12:26:30

YADRO解決方案

2018-12-03 11:59:42

Inventec解決方案

2018-12-03 12:13:21

Mellanox解決方案
點贊
收藏

51CTO技術棧公眾號

日韩母乳在线| 在线观看福利电影| 国产69精品久久777的优势| 久久久亚洲天堂| 人妻体内射精一区二区| 色8久久久久| 欧美日韩性视频| 亚洲人成网站在线观看播放| 亚洲成人黄色片| 久久只有精品| 欧美激情精品久久久久久黑人| 亚洲天堂成人av| 成人豆花视频| 色噜噜狠狠成人中文综合 | 国产欧美日韩影院| 国产麻豆9l精品三级站| 国产最新精品视频| 国产中文字幕久久| 校园春色另类视频| 日韩一区二区三区四区| 爱福利视频一区二区| 丝袜美腿av在线| 国产女人aaa级久久久级| 9a蜜桃久久久久久免费| 中文字幕一区二区三区四区视频 | 午夜肉伦伦影院| 深夜国产在线播放| 中文字幕第一页久久| 欧美二区三区| 色哟哟国产精品色哟哟| 国产一区二三区| 国产乱人伦真实精品视频| 51国产偷自视频区视频| 最新亚洲激情| 久久久免费电影| 69av视频在线| 艳女tv在线观看国产一区| 在线观看欧美日韩国产| 波多野吉衣中文字幕| 红杏成人性视频免费看| 精品久久久久久久人人人人传媒| 手机av在线网| 欧洲亚洲精品久久久久| 91精品办公室少妇高潮对白| 国产91对白刺激露脸在线观看| 免费在线观看的电影网站| 亚洲欧美经典视频| 精品少妇人妻av一区二区| 幼a在线观看| 国产精品国产a级| 亚洲三区视频| 男人和女人做事情在线视频网站免费观看| 国产视频一区在线观看| 欧美一级日本a级v片| 欧美视频免费一区二区三区| 2024国产精品视频| 久久66热这里只有精品| 深夜福利在线观看直播| 久久这里只精品最新地址| 蜜桃av久久久亚洲精品| 国产精品秘入口| 国产精品免费免费| 伊人久久av导航| 99热国产在线| 一区二区三区加勒比av| av免费观看国产| 毛片无码国产| 欧美三级午夜理伦三级中视频| 日韩欧美国产片| 亚洲三级电影| 欧美成人精品福利| 欧美精品黑人猛交高潮| 国产日产精品_国产精品毛片| 最近2019年中文视频免费在线观看| 欧美性生交大片| 国产精品mm| 韩国三级日本三级少妇99| 在线观看免费国产视频| 日韩av中文在线观看| 91香蕉电影院| 天天av综合网| 国产精品久久久久久久久免费相片| youjizz.com亚洲| www.youjizz.com在线| 色老汉一区二区三区| 久久久精品高清| 国产在线播放精品| 国产香蕉97碰碰久久人人| 激情五月激情综合| 合欧美一区二区三区| 热99在线视频| 国产又粗又大又黄| 99精品国产视频| 一区二区国产日产| 丰乳肥臀在线| 欧美日韩电影一区| 北岛玲一区二区| 91成人国产| 91成人精品网站| 国产精品探花视频| 99久久精品久久久久久清纯| 亚洲欧洲精品一区二区三区波多野1战4 | 国产日韩欧美大片| 中文在线а√天堂| 欧美一卡二卡在线| 中文字幕第24页| 99亚洲一区二区| 亚洲www在线| 久久电影视频| 午夜日韩在线观看| 在线一区二区不卡| 欧美人与物videos另类xxxxx| 欧美裸体xxxx极品少妇| 中文字幕乱码中文字幕| 成人午夜在线播放| 中文字幕一区二区三区5566| 中文字幕在线视频网站| 精品久久一区二区| 小早川怜子一区二区的演员表| 每日更新成人在线视频| 成人精品水蜜桃| 国产丝袜在线| 欧美日韩国产中文| 黄色国产在线播放| 可以免费看不卡的av网站| 成人综合av网| 最新av在线播放| 欧美丰满高潮xxxx喷水动漫| 纪美影视在线观看电视版使用方法| 一区二区三区四区五区在线| 国产精品swag| 99在线视频观看| 在线不卡中文字幕播放| 日韩不卡av在线| 日韩精品成人一区二区三区| 美脚丝袜一区二区三区在线观看| 久久青草伊人| 亚洲国产精品一区二区久| 久草视频免费在线| 国产成人精品三级| 国产女主播av| 日韩精品一区国产| 欧美精品免费在线| 国产成人精品亚洲精品色欲| 亚洲情趣在线观看| 欧美体内she精高潮| 中文字幕一区二区精品区| 国产日产久久高清欧美一区| 男女啪啪在线观看| 制服丝袜亚洲网站| 看免费黄色录像| 国模一区二区三区白浆| 91麻豆天美传媒在线| 91麻豆精品| 欧美成人激情视频| 亚洲精品久久久久avwww潮水| 一区二区在线观看免费视频播放| 日韩大尺度视频| 99re国产精品| 欧美午夜精品久久久久免费视| 亚洲精品国产嫩草在线观看| 一区二区三区久久精品| 97人妻精品一区二区三区视频| 亚洲天堂免费看| 国产chinesehd精品露脸| 影音先锋中文字幕一区二区| 精品久久精品久久| 欧美人体一区二区三区| 色哟哟亚洲精品一区二区| 99热这里只有精品99| 亚洲影视资源网| 不卡一区二区在线观看| 日韩精品乱码av一区二区| www.午夜色| 国产精品网址| 国产精品观看在线亚洲人成网| 久久国产精品一区| 亚洲电影免费观看高清| 成人一二三四区| 亚洲色欲色欲www在线观看| 在线观看一区二区三区四区| 亚洲一级在线| 中文字幕日韩精品久久| 超碰成人福利| 国产精品久久久久久av福利| av在线下载| 亚洲欧美综合另类中字| 97超碰国产在线| 岛国av午夜精品| 波多野结衣在线网址| 99久久国产免费看| www.超碰97.com| 亚洲一区国产| 一级特黄妇女高潮| 日韩精品免费一区二区夜夜嗨| 成人免费福利视频| 自由日本语热亚洲人| www.日韩av.com| 青青色在线视频| 欧美一区二区三区思思人| 麻豆成人免费视频| 亚洲美腿欧美偷拍| 受虐m奴xxx在线观看| 国产成人欧美日韩在线电影| 欧美成人黄色网址| 亚洲黄色天堂| 免费看av软件| 精品国产精品国产偷麻豆| 国产98在线|日韩| 欧洲美女精品免费观看视频| 欧美一区二区色| 青草在线视频在线观看| 日韩中文字幕视频在线| 偷拍25位美女撒尿视频在线观看| 日韩欧美在线网站| 国产女主播喷水视频在线观看| 亚洲午夜精品网| www.黄色com| 久久精品一区二区三区av| 亚洲欧洲日韩综合| 精品中文字幕一区二区| 黄色a级片免费| 亚洲久色影视| 4444在线观看| 亚洲女同另类| 欧美爱爱视频网站| 欧美激情另类| 青青草成人激情在线| 欧美调教在线| 国产日韩一区二区| 91午夜精品| 91视频免费在线观看| 成人污污视频| 91成人在线看| 免费欧美网站| 444亚洲人体| 日韩有吗在线观看| 91麻豆桃色免费看| 在线欧美激情| 91免费在线视频网站| 亚州精品国产| 91麻豆国产语对白在线观看| 精品视频在线一区| 97久久天天综合色天天综合色hd| 3d动漫一区二区三区在线观看| 成人激情黄色网| av在线国产精品| 超碰97网站| 国产一区调教| 欧美大香线蕉线伊人久久| 亚洲欧美成人vr| 日韩精品国内| 国产精品久久天天影视| 中文字幕日韩一区二区三区不卡| 91精品国产乱码久久久久久久| 992tv成人免费观看| 亚洲欧美综合| 国产精品久久..4399| 亚洲一区观看| 2025韩国理伦片在线观看| 久久99久久久久| 青青草精品在线| 成人丝袜18视频在线观看| 在线精品一区二区三区| 久久亚洲一区二区三区四区| 蜜桃av乱码一区二区三区| 国产精品家庭影院| 国产这里有精品| 欧美日韩另类视频| 午夜一区二区三区四区| 制服.丝袜.亚洲.中文.综合| 不卡视频在线播放| 亚洲另类欧美自拍| 日本a级在线| 97视频com| 成人免费在线观看视频| 99久久精品久久久久久ai换脸| 美日韩黄色大片| 日本一区二区精品| 亚洲国产老妈| 欧美视频第一区| 精品一区二区三区视频在线观看| 中文字幕在线观看91| 久久五月婷婷丁香社区| 国产极品美女在线| 五月婷婷激情综合| 中文字幕人妻精品一区| 精品成人一区二区三区| 嫩草研究院在线| 欧美成人中文字幕| 超碰aⅴ人人做人人爽欧美| 91精品久久久久久久久久| 国产精品sss在线观看av| 日韩精品久久久毛片一区二区| 亚洲欧美亚洲| 蜜桃免费在线视频| 成人精品国产一区二区4080| 美国黑人一级大黄| 亚洲午夜电影网| 一区二区日韩在线观看| 亚洲韩国青草视频| 国产精品300页| 不卡在线一区| 日韩精品手机在线观看| 久久综合影音| av在线播放网址| 日韩毛片在线免费观看| 无码人妻丰满熟妇区五十路| 精品国产乱码久久久久久1区2区| 91精彩视频在线观看| 538国产精品视频一区二区| 天堂va在线高清一区| 四虎影视永久免费在线观看一区二区三区| 好吊日精品视频| 亚洲小视频网站| 国产欧美日韩三区| yjizz国产| 亚洲成色777777女色窝| 菠萝蜜视频国产在线播放| 国产精品高潮粉嫩av| 亚洲精品合集| 欧美啪啪免费视频| 国产成人av一区二区三区在线观看| 欧美性猛交xxxx乱大交少妇| 91国模大尺度私拍在线视频| 人妻少妇精品无码专区| 欧美激情欧美激情| 蜜桃精品视频| 免费国产成人看片在线| 激情丁香综合五月| jizzjizzjizz国产| 欧美午夜电影网| 在线毛片网站| 国产精品一区二区三区成人| 欧美日韩123| 国产三级三级三级看三级| 久久久蜜臀国产一区二区| 免费看日韩毛片| 日韩av影视在线| 国产v日韩v欧美v| 精品无码久久久久久久动漫| 99精品福利视频| 日本丰满少妇裸体自慰| 精品久久久视频| 免费a级毛片在线观看| 日本成熟性欧美| 禁果av一区二区三区| 九九视频精品在线观看| 国产精品―色哟哟| 91丨九色丨丰满| 不卡av日日日| 99精品中文字幕在线不卡 | heyzo一区| 久久99久久精品国产| 国产欧美91| xxxx日本黄色| 欧美日韩国产高清一区二区 | 欧美日韩激情| 一级黄色录像在线观看| 亚洲视频一区在线| 午夜久久久久久噜噜噜噜| 久久免费观看视频| 日韩有码av| 制服丝袜综合网| 亚洲精品免费看| 熟妇高潮一区二区三区| 日本一区二区三区在线播放| 成人看的羞羞网站| 欧洲美女亚洲激情| 亚洲成人在线观看视频| 亚洲欧洲成人在线| 国产精品情侣自拍| 欧美国产综合| 亚洲一区二区三区蜜桃| 欧美日本一区二区在线观看| 在线不卡日本v二区707| 久久久久久久免费| 久久99国产精品免费| 国产精品成人免费一区二区视频| 精品亚洲aⅴ在线观看| 91麻豆精品| 北条麻妃69av| 亚洲三级在线免费观看| 婷婷丁香花五月天| 国产精品亚洲аv天堂网| 欧美午夜在线| 你懂得视频在线观看| 精品欧美一区二区三区精品久久| 欧洲精品一区二区三区| 手机看片日韩国产| 久久午夜电影网| 亚洲第一色网站| 国产精品免费久久久| 激情综合电影网| 视频国产一区二区| 日韩毛片中文字幕| 国产精品久久久久久久久久久久久久久| 亚洲熟妇无码一区二区三区导航| 国产精品区一区二区三区| 免费看黄网站在线观看|