精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产免费黄色一级片| 国产成人一区二| 人妻av一区二区| 国产深夜视频在线观看| 久久久久久久久久美女| 91影视免费在线观看| 国产精品suv一区二区| 欧美军人男男激情gay| 欧美一区二区三区思思人| 亚洲熟妇国产熟妇肥婆| 免费大片在线观看www| 丁香婷婷深情五月亚洲| 国产精品久久久av| 久久久久久久久久91| 欧美三级三级| 亚洲第一男人av| 欧美成人福利在线观看| h片在线观看视频免费| 国产欧美日韩在线| 精品在线视频一区二区三区| 国产手机视频在线| 日本中文字幕不卡| 91av视频在线免费观看| 永久看片925tv| 精品国产精品久久一区免费式| 亚洲老妇xxxxxx| 国产精品果冻传媒潘| 国产一卡二卡三卡| 亚洲激情亚洲| 欧美精品一二区| 在线观看免费黄色网址| 夜夜春成人影院| 亚洲成av人片在线观看香蕉| 亚洲精品综合在线观看| 超碰一区二区| 亚洲成人动漫一区| h无码动漫在线观看| 1024在线播放| 亚洲女同一区二区| 亚洲欧洲日韩综合二区| 国产黄色免费在线观看| 91丨porny丨中文| 国产精品一区二区三区四区五区 | 在线a免费观看| 粉嫩一区二区三区| 欧美日韩国产在线| 日本午夜激情视频| 人人澡人人添人人爽一区二区| 国产日韩在线免费观看| 牛牛精品在线视频| 最新日韩av在线| 日本一区高清不卡| 午夜视频免费在线| 欧美人在线视频| 成人毛片一区二区| 丰满大乳少妇在线观看网站| 亚洲欧美在线观看| 影音先锋欧美资源| 欧美96在线| 国产精品不卡在线| 一区二区冒白浆视频| 在线观看免费版| 国产精品蜜臀av| 一区二区国产日产| 国产在线激情| 亚洲精品视频在线观看网站| 黄色污污在线观看| 四虎影视国产在线视频| 亚洲国产毛片aaaaa无费看| 久艹在线免费观看| 国模精品视频| 日韩欧美视频一区二区三区| 男人女人黄一级| 福利一区在线| 日韩视频中午一区| 国产高潮失禁喷水爽到抽搐| 加勒比色老久久爱综合网| 亚洲精品久久久久国产| 国产精品高清无码在线观看| 欧美码中文字幕在线| 丝袜亚洲另类欧美重口| 2018天天弄| 国产精品女主播一区二区三区 | 日韩一区二区三区不卡| 成人va在线观看| 欧美日韩电影一区二区| 午夜国产福利在线| 一区二区不卡在线视频 午夜欧美不卡在 | 国产一级免费观看| 日韩视频二区| 国产v综合v亚洲欧美久久| 一区二区三区免费观看视频| 国产99精品国产| 欧洲精品一区色| 国产日产一区二区| 五月综合激情网| 在线观看的毛片| 99re8这里有精品热视频免费| 欧美日韩一区二区三区四区| 中文字幕55页| 免费短视频成人日韩| 欧美成人免费播放| 无码人妻精品一区二区三区9厂| 欧美午夜a级限制福利片| 性欧美视频videos6一9| 一级黄色片在线| 成人综合在线观看| 亚洲午夜激情| 日韩大尺度黄色| 日韩欧美的一区| 成人激情五月天| 中日韩视频在线观看| 91免费电影网站| 成人av一区| 五月婷婷色综合| 少妇愉情理伦片bd| 波多野结衣在线观看一区二区| 中文字幕日韩av电影| 久久高清免费视频| 精品一区在线看| 神马影院我不卡午夜| 国产va在线视频| 日韩欧美国产wwwww| 久草手机视频在线观看| 久久久久久黄| 另类欧美小说| 大香伊人中文字幕精品| 欧美一区二区三区喷汁尤物| 欧美xxxx精品| 日韩黄色免费网站| 免费一区二区三区在在线视频| 韩国中文字幕2020精品| 亚洲成人动漫一区| 一区二区三区四区影院| 91精品啪在线观看国产18| 国产精品一区二区3区| 国产在线超碰| 日韩欧美亚洲一二三区| 一区二区免费在线观看视频| 极品少妇一区二区三区| 91亚洲精品一区二区| 欧美性videos| 欧美三级日韩在线| 亚洲色图100p| 久久国产生活片100| 亚洲电影免费| 亚洲精品aa| 精品国产欧美一区二区五十路| 久久免费黄色网址| 国产成人精品一区二区三区四区 | 日本欧美中文字幕| 色哟哟在线观看| 亚洲国产一区二区三区青草影视 | 91在线看视频| av在线不卡网| 欧美亚洲精品一区二区| 台湾佬综合网| 国产成人短视频| 国产对白叫床清晰在线播放| 欧美性生活大片视频| 丰满的亚洲女人毛茸茸| 久久精品国产色蜜蜜麻豆| 亚洲欧美成人一区| 日本少妇精品亚洲第一区| 欧美激情在线狂野欧美精品| 欧美 日韩 国产 精品| 亚洲国产精品久久久久秋霞影院| 天堂在线资源视频| 四季av一区二区凹凸精品| 国产欧美 在线欧美| 国产精品实拍| 精品电影一区二区| 欧美特黄aaaaaa| 国产欧美一区二区精品性色| 蜜臀av免费观看| 欧美1区3d| 国内精品视频免费| 最新欧美电影| 久久福利网址导航| 日本黄在线观看| 欧美私模裸体表演在线观看| 丝袜美腿小色网| 91在线porny国产在线看| 国产日韩成人内射视频| 亚洲国产不卡| 免费在线国产精品| 国产精品一区二区三区四区在线观看| 国产一区二区三区在线观看视频| 国产精品黄色网| 国产欧美日韩综合精品一区二区| 你懂的av在线| 97精品一区| 久久精品99久久| 亚洲免费看片| 国产91成人video| 成人影院www在线观看| 亚洲精品黄网在线观看| 亚洲视频一区二区三区四区| 亚洲一区二区三区国产| 香蕉久久久久久久| 成人黄色综合网站| 亚洲一区二区福利视频| 一本不卡影院| 免费国产成人看片在线| 视频一区欧美| 国产日韩在线一区二区三区| 久久国内精品| 国产aⅴ夜夜欢一区二区三区 | 亚洲性猛交富婆| 亚洲欧美精品午睡沙发| 国产一二三四五区| 成人午夜激情影院| 中文 日韩 欧美| 日韩电影在线一区二区三区| av在线免费观看国产| 欧美电影三区| 欧美日韩成人一区二区三区| 成人爽a毛片| 亚洲xxx视频| 香蕉久久一区| 国产精品成av人在线视午夜片| 国产三级视频在线看| 精品国产乱码久久久久久夜甘婷婷| 日韩少妇裸体做爰视频| 亚洲欧美日韩国产手机在线| 国产伦理片在线观看| 99精品久久免费看蜜臀剧情介绍| 日韩免费视频播放| 狠狠爱成人网| 天堂а√在线中文在线| 91九色精品| 欧美一区二区三区电影在线观看| 777午夜精品电影免费看| 欧美一级高清免费| 两个人看的在线视频www| 久久久伊人欧美| 日本高清成人vr专区| 久久资源免费视频| 国产美女福利在线| 美女少妇精品视频| 婷婷色在线资源| 久久久久久av| 免费在线播放电影| 欧美日韩国产999| 九七电影韩国女主播在线观看| 日韩精品一区二区三区中文不卡| 人妻人人澡人人添人人爽| 成人免费视频播放| 国产ts在线观看| 丁香婷婷深情五月亚洲| 国产成人av无码精品| av一区二区三区在线| 日本一卡二卡在线| 久久久精品欧美丰满| 精品人妻中文无码av在线 | 丝袜美腿一区二区三区| 男人揉女人奶房视频60分| 国产情侣一区| 欧美精品第三页| 日本强好片久久久久久aaa| 精品亚洲一区二区三区四区| 国模无码大尺度一区二区三区| 91九色丨porny丨国产jk| 亚洲小说欧美另类婷婷| 国产人妻777人伦精品hd| 欧美一级久久| 日韩一区二区三区不卡视频| 韩国av一区二区| 日韩成人av影院| 久久精品亚洲精品国产欧美 | 国产精品中文有码| 国产大尺度视频| 久久先锋影音av| 91香蕉视频网| 亚洲国产精品一区二区www| 在线观看免费av片| 欧美色老头old∨ideo| 一级做a爱片久久毛片| 日韩视频免费观看高清完整版| 最近中文字幕免费观看| 91精品国产丝袜白色高跟鞋| 欧美 日韩 国产 在线| 亚洲人成在线观看| 国产日产一区二区三区| 性欧美暴力猛交69hd| 国产亚洲欧美日韩精品一区二区三区| 欧美亚洲在线观看| 亚洲国产91视频| 国产一区高清视频| 日韩中文在线电影| 日本人体一区二区| 青青青伊人色综合久久| 特黄特色免费视频| 国产日韩欧美精品一区| 欧美成人免费观看视频| 一本到高清视频免费精品| 国产理论片在线观看| 日韩国产在线看| 国产成人l区| 日韩av手机在线看| 亚洲国产高清在线观看| 日韩高清专区| 在线不卡亚洲| 日本亚洲一区二区三区| 国产日韩精品一区| 国产无遮挡免费视频| 3d成人h动漫网站入口| 免费在线看v| 久久久噜噜噜久噜久久| 视频欧美精品| 日本一区二区不卡高清更新| 激情成人综合| 午夜影院免费观看视频| 欧美激情在线看| 欧美日韩综合在线观看| 日韩欧美一区在线| 欧美极品视频| 国产成人久久久精品一区| 99久久香蕉| 中国黄色录像片| 老司机精品视频一区二区三区| 亚洲理论中文字幕| 国产女人水真多18毛片18精品视频| 熟女俱乐部一区二区视频在线| 久久久久久久电影| 日本一级淫片色费放| 欧美一级高清片| 麻豆av免费在线观看| 国产精品亚洲综合天堂夜夜| 精品国内自产拍在线观看视频 | 国产精品美乳在线观看| 日韩一区av| 久久久久久久av| 精品国产亚洲一区二区三区在线| 91亚洲精华国产精华| 国产videos久久| 无码粉嫩虎白一线天在线观看 | 亚洲精品国模| 青青草成人免费在线视频| 99在线精品免费| 在线观看日韩中文字幕| 亚洲国产精品一区二区三区| 草草在线视频| 久久av免费一区| 麻豆久久精品| 影音先锋制服丝袜| 欧美三级电影在线看| 午夜dv内射一区二区| caoporen国产精品视频| 精品成人免费视频| 亚洲国产美女精品久久久久∴| 精品美女视频在线观看免费软件| 在线成人一区二区| 久久麻豆视频| 艳母动漫在线免费观看| 国产盗摄女厕一区二区三区| 激情五月少妇a| 精品福利一二区| 182在线视频观看| 久久精品国产第一区二区三区最新章节 | 欧美一二三区| 日本大胆欧美人术艺术动态| 国产精品视频在| 91精品国产综合久久久久久 | 欧美激情精品| 人妻激情另类乱人伦人妻| 成人黄色在线看| 51国产偷自视频区视频| 国产亚洲欧洲高清一区| 亚洲精品自拍| 青草视频在线观看视频| av午夜一区麻豆| 潘金莲一级淫片aaaaaa播放| 日韩视频亚洲视频| 亚洲一区二区电影| 国内自拍在线观看| 国产精品免费aⅴ片在线观看| 亚洲精品男人的天堂| 视频直播国产精品| 日本精品在线播放| 红桃av在线播放| 国产精品久久久久影院| 性网爆门事件集合av| 日本精品视频在线观看| 欧美电影三区| 青青草视频网站| 欧美天堂一区二区三区| 女同一区二区免费aⅴ| 欧美一级日本a级v片| 国产乱淫av一区二区三区| aaa人片在线| 精品国产一区二区三区久久久| 成人美女黄网站| 裸体裸乳免费看| 久久综合久久综合九色| 国产精品热久久| 青青久久aⅴ北条麻妃| 国产韩国精品一区二区三区| 国产激情第一页| 91精品国产综合久久蜜臀|