using System;
using System.Text; namespace Test
{
class MainClass
{
/// <summary>
/// 中文空白字符,用于替换空格
/// </summary>
private static string ChineseSpace = " "; public static void Main(string[] args)
{
string s = "你我是中国人 12 34 ABCabc";
Console.WriteLine(s);
s = ChineseToCoding(s);
Console.WriteLine(s);
s = CodingToChinese(s);
Console.WriteLine(s);
Console.ReadKey();
} /// <summary>
/// 汉字转区位码方法
/// </summary>
/// <param name="character">汉字</param>
/// <returns>区位码</returns>
public static string ChineseToCoding(string character)
{
string coding = string.Empty; //空格处理(如不用可以注释)
character = character.Replace(" ", ChineseSpace); try
{
for (int i = ; i < character.Length; i++)
{
byte[] bytes = System.Text.Encoding.GetEncoding("GB2312").GetBytes(character.Substring(i, ));
if (bytes.Length == )
{
string lowCode = System.Convert.ToString(bytes[], );
if (lowCode.Length == )
lowCode = "" + lowCode;
string hightCode = System.Convert.ToString(bytes[], );
if (hightCode.Length == )
hightCode = "" + hightCode;
coding += (lowCode + hightCode);
}
else
{
string lowCode = System.Convert.ToString(bytes[], );
if (lowCode.Length == )
lowCode = "" + lowCode;
coding += (lowCode);
}
}
return coding;
}
catch
{
return null;
}
} /// <summary>
/// 区位码转汉字方法
/// </summary>
/// <param name="coding">区位码</param>
/// <returns>汉字</returns>
public static string CodingToChinese(string coding)
{
string characters = string.Empty;
if (coding.Length % != )//编码为16进制,必须为4的倍数。
{
throw new System.Exception("编码格式不正确");
}
for (int i = ; i < coding.Length / ; i++)
{
byte[] bytes = new byte[];
int j = i * ;
string lowCode = coding.Substring(j, ); //取出低字节,并以16进制进制转换
bytes[] = System.Convert.ToByte(lowCode, );
string highCode = coding.Substring(j + , ); //取出高字节,并以16进制进行转换
bytes[] = System.Convert.ToByte(highCode, );
string character = System.Text.Encoding.GetEncoding("GB2312").GetString(bytes);
characters += character;
} //空格复原(将中文空白字符转换普通空格)
characters = characters.Replace(ChineseSpace, " "); return characters;
}
}
}

C# 汉字与区位码之间的相互转换(中文数字字母可以,支持空格,但是特殊字符未来得及测试)的更多相关文章

  1. 【Teradata SQL】从中文数字字母混合字符串中只提取数字regexp_substr

    目标:从中文数字字母的字符串中只提取数字 sel regexp_substr('mint choc中文11国1','\d+')

  2. 使用Java将阿拉伯数字转换为中文数字(适配小数转换)

    Java数字转换工具类 简介 该工具类可以将整数.小数.负数转换为中文的数字,如: 0 --> 零 1 --> 一 2.1 --> 二点一 -2.1 --> 负二点一 具体代码 ...

  3. 汉字与区位码互转(天天使用的String存储的是内码),几个常见汉字编码,附有读书笔记

    汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ “啊”字是GB2312之中的第一个汉字,会 ...

  4. PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转

    ChineseUtil 下载地址:https://github.com/Yurunsoft/ChineseUtil 另外一个中文转拼音工具:https://github.com/overtrue/pi ...

  5. 字符编码之间的相互转换 UTF8与GBK(转载)

    转载自http://www.cnblogs.com/azraelly/archive/2012/06/21/2558360.html UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 ...

  6. ios 一个正则表达式测试(只可输入中文、字母和数字)

    一个正则表达式测试(只可输入中文.字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上 ...

  7. 汉字与区位码互转(天天使用Delphi的String存储的是内码,Windows记事本存储的文件也是内码),几个常见汉字的各种编码,utf8与unicode的编码在线查询,附有读书笔记 good

    汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ 汉(记住它,以后碰到内存里的数值,就会有敏 ...

  8. 【miscellaneous】【C/C++语言】UTF8与GBK字符编码之间的相互转换

    UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值." ...

  9. json和string 之间的相互转换

    json和string 之间的相互转换 <script type="text/javascript"> //先认识一下js中json function showInfo ...

随机推荐

  1. 小trick总结

    一个圆上的整点数量不会很多.(Cf AIM TR 5 F) 二分图完美匹配求字典序最小的方案:先一遍匈牙利求出任意一组完美匹配.再跑一遍逐位确定,要求不能修改编号比它小的匹配.(LG 4100) 如果 ...

  2. [hihocoder1509][异或排序]

    hihocoder1509 思路 对于每两个数,从二进制的高位到低位考虑,发现,若前面一个的当前位是1,后面一个的当前位置是0,那么s的当前位置必须是1.反之,若前面是0,后面是1,那么s的当前位置必 ...

  3. easyui-treegrid的案例

    1.前台html <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  4. 串口、COM口、TTL、RS-232、RS-485区别详解

    1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号).    2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避 ...

  5. Nginx的特性与核心类别及配置文件和模块详解

    1.root path 设置web资源路径,用于指定请求的根文档目录,从根开始匹配 root:root/URI 2.alias path 指定路径别名,只能用于location中,从最后一个/开始匹配 ...

  6. js(=>) 箭头函数 详细解说 案例大全

    ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: fu ...

  7. Docker简介以及安装

    Docker简介以及安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是容器 1.一种虚拟化方案 与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运 ...

  8. Unity触发器有时失效的原因

    unity里面的触发器有时候不起作用,我原以为是失效了.其实是这样的,所谓触发器就是被触发的物体,例如你子弹打小怪.如果把子弹设置成触发器那么是不成功的,因为子弹是主动的啊,那么把小怪设置成触发器了呢 ...

  9. MyBatis中resultType和resultMap的区别

    resultType和resultMap功能类似  ,都是返回对象信息  ,但是resultMap要更强大一些 ,可自定义.因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名 ...

  10. JAVA记录-POST与GET方式区别

    1.get是从服务器上获取数据的一种请求,post是向服务器提交数据的一种请求. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到 ...