国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

關(guān)于JAVA的字符編碼問題

2019-11-18 11:03:38
字體:
供稿:網(wǎng)友

關(guān)于java的字符編碼問題


關(guān)于字符編碼的概念及技巧

在基于 Java 語言的編程中,我們經(jīng)常碰到漢字的處理及顯示的問題。

Java 語言默認(rèn)的編碼方式是UNICODE ,它給JAVA帶來了活力,及更廣的適應(yīng)性,但是問題也隨之而來我們通常使用的文件和數(shù)據(jù)庫一般都是基于 GB2312或者 BIG5 等方式編碼的,怎樣才能夠恰當(dāng)?shù)剡x擇漢字編碼方式并正確地處理漢字的編碼呢?

英文字符一般是以一個(gè)字節(jié)來表示的,最常用的編碼方法是 ASCII 。但一個(gè)字節(jié)最多只能區(qū)分256個(gè)字符,而漢字成千上萬,所以現(xiàn)在都以雙字節(jié)來表示漢字,為了能夠與英文字符分開,每個(gè)字節(jié)的最高位一定為1,這樣雙字節(jié)最多可以表示64K格字符。我們經(jīng)常碰到的編碼方式有GB2312、BIG5、UNICODE 等。關(guān)于具體編碼方式的具體資料,有愛好的讀者可以查閱相關(guān)資料。GB2312是國標(biāo)碼。兩個(gè)字節(jié)中,第一個(gè)字節(jié)(高字節(jié))的值為區(qū)號(hào)值加32(20H),第二個(gè)字節(jié)(低字節(jié))的值為位號(hào)值加32(20H),用這兩個(gè)值來表示一個(gè)漢字的編碼。
UNICODE 碼是微軟提出的解決多國字符問題的多字節(jié)等長編碼,它對(duì)英文字符采取前面加“0”字節(jié)的策略實(shí)現(xiàn)等長兼容。如 “A” 的 ASCII 碼為0x41,UNICODE 就為0x00,0x41,利用非凡的工具各種編碼之間可以互相轉(zhuǎn)換。

我們經(jīng)常碰到這樣的情況:瀏覽基于 jsp 技術(shù)的網(wǎng)站看到的是亂碼,文件打開后看到的也是亂碼,這是因?yàn)?外部文件-> Java 字節(jié)碼-> ;虛擬機(jī)->操作系統(tǒng)->顯示設(shè)備” 這個(gè)轉(zhuǎn)變過程有了問題。首先看一個(gè)JSP中的解決中文問題的例子,我想這段代碼大家都很熟悉吧,
但他的具體含義是什么呢?為什么要這樣做呢?

String s1 = request.getParameter(“keyWord”);
//從request中取參數(shù) s1

byte[] bytes=s1.getBytes(“ISO-8859-1”);
//把s1(按Unicode->ISO-8859-1) 轉(zhuǎn)回原來的byte[]。

String s2 = new String(bytes,”GBK”);
//因?yàn)樵瓉淼膮?shù)(或字符,字串)是GBK編碼方式,所以把bytes
//按照GBK->Unicode的方式轉(zhuǎn)碼

為什么要這樣做呢?因?yàn)榻邮盏膮?shù)本來是GBK編碼方式的,但是缺省的用了
iso-8859-1->Unicode 的轉(zhuǎn)碼方式把參數(shù)轉(zhuǎn)成了String
所以肯定是亂碼(中文時(shí))

只要了解了這個(gè)基本道理,中文字符問題應(yīng)該都能解決!



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 剑河县| 晋州市| 湾仔区| 郑州市| 龙川县| 昭觉县| 平阴县| 金川县| 泗洪县| 康乐县| 广德县| 来凤县| 阿拉善盟| 温州市| 宝坻区| 平定县| 区。| 太康县| 沅江市| 满洲里市| 柳江县| 吉林省| 巫溪县| 井陉县| 汾西县| 博兴县| 资兴市| 禹州市| 深圳市| 平昌县| 林州市| 桃江县| 淳安县| 芮城县| 扶风县| 石台县| 龙岩市| 泰州市| 通化市| 阿拉善盟| 金堂县|