字符编码 字符串转义

字符串 转义符
使用System.String和System.Text.StringBuilder,可以动态构造自定义字符串,执行许多基本字符串操作,如从字节数组创建新字符串,比较字符串的值和修改现有的字符串等等。
C#字符串是使用string关键字声明的一个字符数组。字符串是使用引号声明的;
字符串中可以包含转义符,如“\n”(新行)和“\t”(制表符)。
如果希望字符串中包含斜杠,则它前面必须还有另一个反斜杠,用于取消后面一个斜杠的转义,仅表示为其自身.
字符串前带 @ 符号时(原义字符串),字符串构造函数将忽略转义符\和分行符,

在原义字符串中,用另一个双引号字符转义双引号字符,如下示例:
string str = "my \"David\" is OK";        //字符串中\*,转义,表示字符串引号 
str = @"my ""David"" is OK";             //愿意字符串,即取消转义,字符串中用两个""表示双引号。
String 对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。有些字符串操作看来似乎修改了 String 对象,实际上是返回一个包含修改内容的新 String 对象。如果需要修改字符串对象的实际内容,可以使用 System.Text.StringBuilder 类.

字符编码

C#字符串是Unicode字符的有序集合,Unicode字符使用UTF-16进行编码,编码的每个元素的数值都用一个System.Char对象表示.
首先介绍 ANSI编码,ANSI不是一种特定的编码方式,具体是要取决于操作系统:如果是中文操作系统指的ANSI就是指的是GBK,    如果是日本,就是JIS,如果是英文,就是ASCII.
ASCII码
对于ASCII码在平时用接触到的最多,ASCII对照表规定了字符和其ASCII码(0 - 127)的对应关系,比如字符字母a对应的ASCII 码是97(十进制),下面列出了所有数字和字符的ASCII范围:

0-9        48-57

A-Z        65-90

a-z        97-122
每个字符用一个字节(8位)表示。标准ASCII码最高位恒为0,剩下7位(2 ^ 7次方 = 128)就足够表示所有英文字符,数字字符,英文标点字符和控制字符了.
GBK码
对于GBK码,兼容ASCII码表示的字符以外,延伸0x80 - 0xff(128~255)。用2个字节表示一个中文字符。解析的时候,如果第一个字节大于127,直接再往后读取一个字节,显示为对应的中文字符.GBK码的字符集包含了简体和繁体,GBK 兼容 GB2312,GB2312兼容ASCII码.

默认情况下,公共语言运行库CLR(Common Language Runtime)使用UTF-16编码表示字符,UTF-16编码是Unicode转换格式,16位编码形式.
string strr = "abc";
byte[] bytes_asci = Encoding.ASCII.GetBytes(strr);
int cnt_chars = Encoding.ASCII.GetCharCount(bytes_asci);
char[] chs = Encoding.ASCII.GetChars(bytes_asci);

//获取字符串的指定编码方式的byte[],两个字节表示一个汉字
byte[] bytes_gbk = Encoding.GetEncoding("GBK").GetBytes("你来你去");

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值