字符区位码 java_用Java取得汉字的区位码
發(fā)代碼之前先轉(zhuǎn)段預(yù)備知識(shí)
計(jì)算機(jī)處理漢字信息的前提條件是對(duì)每個(gè)漢字進(jìn)行編碼,這些編碼統(tǒng)稱(chēng)為漢字編碼。漢字信息在系統(tǒng)內(nèi)傳送的過(guò)程就是漢字編碼轉(zhuǎn)換的過(guò)程。
漢字交換碼:漢字信息處理系統(tǒng)之間或通信系統(tǒng)之間傳輸信息時(shí),對(duì)每一個(gè)漢字所規(guī)定的統(tǒng)一編碼,我國(guó)已指定漢字交換碼的國(guó)家標(biāo)準(zhǔn)“信息交換用漢字編碼字符集——基本集”,代號(hào)為GB 2312—80,又稱(chēng)為“國(guó)標(biāo)碼”。
國(guó)標(biāo)碼:所有漢字編碼都應(yīng)該遵循這一標(biāo)準(zhǔn),漢字機(jī)內(nèi)碼的編碼、漢字字庫(kù)的設(shè)計(jì)、漢字輸入碼的轉(zhuǎn)換、輸出設(shè)備的漢字地址碼等,都以此標(biāo)準(zhǔn)為基礎(chǔ)。GB 2312—80就是國(guó)標(biāo)碼。該碼規(guī)定:一個(gè)漢字用兩個(gè)字節(jié)表示,每個(gè)字節(jié)只有7位,與ASCII碼相似。
區(qū)位碼:將GB 2312—80的全部字符集組成一個(gè)94×94的方陣,每一行稱(chēng)為一個(gè)“區(qū)”,編號(hào)為0l~94;每一列稱(chēng)為一個(gè)“位”,編號(hào)為0l~94,這樣得到GB 2312—80的區(qū)位圖,用區(qū)位圖的位置來(lái)表示的漢字編碼,稱(chēng)為區(qū)位碼。
機(jī)內(nèi)碼:為了避免ASCII碼和國(guó)標(biāo)碼同時(shí)使用時(shí)產(chǎn)生二義性問(wèn)題,大部分漢字系統(tǒng)都采用將國(guó)標(biāo)碼每個(gè)字節(jié)高位置1作為漢字機(jī)內(nèi)碼。這樣既解決了漢字機(jī)內(nèi)碼與西文機(jī)內(nèi)碼之間的二義性,又使?jié)h字機(jī)內(nèi)碼與國(guó)標(biāo)碼具有極簡(jiǎn)單的對(duì)應(yīng)關(guān)系。
漢字機(jī)內(nèi)碼、國(guó)標(biāo)碼和區(qū)位碼三者之間的關(guān)系為:區(qū)位碼(十進(jìn)制)的兩個(gè)字節(jié)分別轉(zhuǎn)換為十六進(jìn)制后加20H得到對(duì)應(yīng)的國(guó)標(biāo)碼;機(jī)內(nèi)碼是漢字交換碼(國(guó)標(biāo)碼)兩個(gè)字節(jié)的最高位分別加1,即漢字交換碼(國(guó)標(biāo)碼)的兩個(gè)字節(jié)分別加80H得到對(duì)應(yīng)的機(jī)內(nèi)碼;區(qū)位碼(十進(jìn)制)的兩個(gè)字節(jié)分別轉(zhuǎn)換為十六進(jìn)制后加A0H得到對(duì)應(yīng)的機(jī)內(nèi)碼。
public
class
WordCode?{
public
static
String?bytes2HexString(
byte
b)?{
return
bytes2HexString(
new
byte
[]?{?b?});
}
public
static
String?bytes2HexString(
byte
[]?b)?{
String?ret
=
""
;
for
(
int
i
=
0
;?i
<
b.length;?i
++
)?{
String?hex
=
Integer.toHexString(b[i]
&
0xFF
);
if
(hex.length()
==
1
)?{
hex
=
'
0
'
+
hex;
}
ret
+=
hex.toUpperCase();
}
return
ret;
}
public
static
void
main(String[]?args)
throws
Exception?{
String?str
=
"
孫
"
;
byte
[]?bs
=
str.getBytes(
"
GB2312
"
);
String?s
=
""
;
for
(
int
i
=
0
;?i
<
bs.length;?i
++
)?{
int
a
=
Integer.parseInt(bytes2HexString(bs[i]),
16
);
s
+=
(a
-
0x80
-
0x20
)
+
""
;
}
System.out.println(s);
}
}
最后發(fā)個(gè)查詢(xún)的網(wǎng)站
總結(jié)
以上是生活随笔為你收集整理的字符区位码 java_用Java取得汉字的区位码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 模拟测静电场实验报告
- 下一篇: 量子计算机原理与退火算法的通俗解释