一、GB2312字符集汉字编码间的转换
1、区位码转换为国标码方法如下:
国标码高位字节=(区号)H+20H
国标码低位字节=(位号)H+20H
区位码转换为国标码的方法是加2020H
2、国标码转换为机内码方法如下:
机内码高位字节=(国标码)H+80H
机内码低位字节=(国标码)H+80H
国标码转换为机内码的方法是加8080H
3、区位码转换为机内码方法如下:
可见,区位码到机内码加了两次:20H + 80H = 32 + 128 = 160 = A0H
因此,区位码转换机内码的方法,是高位字节和低位字节加160。
机内码高位字节=(区号)H+A0H
机内码低位字节=(位号)H+A0H
区位码转换为机内码的方法是加A0 A0H
4、机内码转换为区位码方法如下:
机内码转换区位码的方法,是高位字节和低位字节减160。
机内码转换为区位码的方法是减A0A0H
注意:计算机使用的字符都为机内码!
GB2312字符集的区位码为十进制数来表示。
二、部分GB2312字符集
为帮助理解,以下提供部分GB2312字符集。
01 0 1 2 3 4 5 6 7 8 9
0 、 。 · ˉ ˇ ¨ 〃 々
1 — ~ ‖ … ‘ ’ “ ” 〔 〕
2 〈 〉 《 》 「 」 『 』 〖 〗
3 【 】 ± × ÷ ∶ ∧ ∨ ∑ ∏
4 ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠ ⌒ ⊙
5 ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯
6 ≤ ≥ ∞ ∵ ∴ ♂ ♀ ° ′ ″
7 ℃ $ ¤ ¢ £ ‰ § № ☆ ★
8 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※
9 → ← ↑ ↓ 〓
02 0 1 2 3 4 5 6 7 8 9
0 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ
1 ⅹ ⒈ ⒉ ⒊
2 ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔
3 ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶
4 ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀
5 ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③
6 ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ㈠
7 ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩
8 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ
9 Ⅹ Ⅺ Ⅻ
03 0 1 2 3 4 5 6 7 8 9
0 ! " # ¥ % & ' ( )
1 * + , - . / 0 1 2 3
2 4 5 6 7 8 9 : ; < =
3 > ? @ A B C D E F G
4 H I J K L M N O P Q
5 R S T U V W X Y Z [
6 \ ] ^ _ ` a b c d e
7 f g h i j k l m n o
8 p q r s t u v w x y
9 z { | }  ̄
17 0 1 2 3 4 5 6 7 8 9
0 薄 雹 保 堡 饱 宝 抱 报 暴
1 豹 鲍 爆 杯 碑 悲 卑 北 辈 背
2 贝 钡 倍 狈 备 惫 焙 被 奔 苯
3 本 笨 崩 绷 甭 泵 蹦 迸 逼 鼻
4 比 鄙 笔 彼 碧 蓖 蔽 毕 毙 毖
5 币 庇 痹 闭 敝 弊 必 辟 壁 臂
6 避 陛 鞭 边 编 贬 扁 便 变 卞
7 辨 辩 辫 遍 标 彪 膘 表 鳖 憋
8 别 瘪 彬 斌 濒 滨 宾 摈 兵 冰
9 柄 丙 秉 饼 炳
本例的关键代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text; //引用Encoding类
namespace Ex04_19
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "弗";
}
private void button1_Click(object sender, EventArgs e)
{
string strSource = textBox1.Text.Trim();
//C#缺省的字符集为GB2312-80
Encoding defEnd = Encoding.Default;
byte[] array2 = defEnd.GetBytes(strSource);
int iFrist = array2[0];
int iFrist1 = iFrist - 160;
int iSecond = array2[1];
int iSecond1 = iSecond - 160;
string strFront, strBack;
if (iFrist1 < 10)
strFront = "0" + iFrist1.ToString();
else
strFront = iFrist1.ToString();
if (iSecond1 < 10)
strBack = "0" + iSecond1.ToString();
else
strBack = iSecond1.ToString();
textBox2.Text = strFront;
textBox3.Text = strBack;
}
}
}
标签:机内码,字节,C#,区位码,GB2312,System,国标码,using From: https://www.cnblogs.com/it001xyz/p/17778501.html