没有合适的资源?快使用搜索试试~ 我知道了~
C#随机生成汉字验证码代码.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 151 浏览量
2022-11-24
21:46:59
上传
评论
收藏 15KB DOCX 举报
温馨提示
试读
4页
C#随机生成汉字验证码代码.docxC#随机生成汉字验证码代码.docx
资源推荐
资源详情
资源评论
C#随机生成汉字验证码代码
在.Net中可以使用 System.Text来处理所有语言的编码。在 System.Text命名空间中包含众多编码的类,
可供进行操作及转换。其中的 Encoding类就是重点处理汉字编码的类。通过在.NET文档中查询 Encoding
类的方法我们可以发现所有和文字编码有关的都是字节数组,其中有两个很好用的方法:
Encoding.GetBytes ()方法将指定的 String 或字符数组的全部或部分内容编码为字节数组
Encoding.GetString ()方法将指定字节数组解码为字符串。
没错我们可以通过这两个方法将汉字字符编码为字节数组,同样知道了汉字 GB2312的字节数组编码也
就可以将字节数组解码为汉字字符。通过对“好”字进行编码为字节数组后
Encoding gb=System.Text.Encoding.GetEncoding("gb2312");
object[] bytes=gb.Encoding.GetBytes ("好");
发现得到了一个长度为 2 的字节数组 bytes,使用
string lowCode = System.Convert.ToString(bytes[0], 16); //取出元素 1 编码内容(两位 16进制)
string hightCode = System.Convert.ToString(bytes[1], 16);//取出元素 2 编码内容(两位 16进制)
之后发现字节数组 bytes16进制变码后内容竟然是{ba,c3},刚好是“好”字的十六进制区位码(见区
位码表)。
因此我们就可以随机生成一个长度为 2 的十六进制字节数组,使用 GetString ()方法对其进行解码就
可以得到汉字字符了。不过对于生成中文汉字验证码来说,因为第 15区也就是 AF区以前都没有汉字,只
有少量符号,汉字都从第 16区 B0开始,并且从区位 D7开始以后的汉字都是和很难见到的繁杂汉字,所以
这些都要排出掉。所以随机生成的汉字十六进制区位码第 1 位范围在 B、C、D 之间,如果第 1 位是 D 的话,
第 2 位区位码就不能是 7 以后的十六进制数。在来看看区位码表发现每区的第一个位置和最后一个位置都
是空的,没有汉字,因此随机生成的区位码第 3 位如果是 A 的话,第 4 位就不能是 0;第 3 位如果是 F 的
话,第 4 位就不能是 F。
好了,知道了原理,随机生成中文汉字的程序也就出来了,以下就是生成 4 个随机汉字的 C#控制台代
码:
//获取 GB2312编码页(表)
Encoding gb=Encoding.GetEncoding("gb2312");
资源评论
G11176593
- 粉丝: 6643
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功