字符区位码 java_用Java取得汉字的区位码
發代碼之前先轉段預備知識
計算機處理漢字信息的前提條件是對每個漢字進行編碼,這些編碼統稱為漢字編碼。漢字信息在系統內傳送的過程就是漢字編碼轉換的過程。
漢字交換碼:漢字信息處理系統之間或通信系統之間傳輸信息時,對每一個漢字所規定的統一編碼,我國已指定漢字交換碼的國家標準“信息交換用漢字編碼字符集——基本集”,代號為GB 2312—80,又稱為“國標碼”。
國標碼:所有漢字編碼都應該遵循這一標準,漢字機內碼的編碼、漢字字庫的設計、漢字輸入碼的轉換、輸出設備的漢字地址碼等,都以此標準為基礎。GB 2312—80就是國標碼。該碼規定:一個漢字用兩個字節表示,每個字節只有7位,與ASCII碼相似。
區位碼:將GB 2312—80的全部字符集組成一個94×94的方陣,每一行稱為一個“區”,編號為0l~94;每一列稱為一個“位”,編號為0l~94,這樣得到GB 2312—80的區位圖,用區位圖的位置來表示的漢字編碼,稱為區位碼。
機內碼:為了避免ASCII碼和國標碼同時使用時產生二義性問題,大部分漢字系統都采用將國標碼每個字節高位置1作為漢字機內碼。這樣既解決了漢字機內碼與西文機內碼之間的二義性,又使漢字機內碼與國標碼具有極簡單的對應關系。
漢字機內碼、國標碼和區位碼三者之間的關系為:區位碼(十進制)的兩個字節分別轉換為十六進制后加20H得到對應的國標碼;機內碼是漢字交換碼(國標碼)兩個字節的最高位分別加1,即漢字交換碼(國標碼)的兩個字節分別加80H得到對應的機內碼;區位碼(十進制)的兩個字節分別轉換為十六進制后加A0H得到對應的機內碼。
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);
}
}
最后發個查詢的網站
總結
以上是生活随笔為你收集整理的字符区位码 java_用Java取得汉字的区位码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟测静电场实验报告
- 下一篇: 【大话Java面试】-如何通俗易懂的理解