字符

Unicode字符集和多字节字符集

拜拜、爱过 提交于 2020-04-01 04:23:52
在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号例如制表符。 后来,由于各国语言的加入,ASCII已经不能满足信息交流的需要,因此,为了能够表示其它国家的文字,各国在ASCII的基础上制定了自己的字符集,这些从ANSI标准派生的字符集被习惯的统称为ANSI字符集,它们正式的名称应该是MBCS(Multi-Byte Chactacter System,即多字节字符系统)。这些派生字符集的特点是以ASCII 127 bits为基础,兼容ASCII 127,他们使用大于128的编码作为一个Leading Byte,紧跟在Leading Byte后的第二(甚至第三)个字符与Leading Byte一起作为实际的编码。这样的字符集有很多,我们常见的GB-2312就是其中之一。 例如在GB-2312字符集中,“连通”的编码为C1 AC CD A8,其中C1和CD就是Leading Byte

宽字符,Ansic和Unicode

≯℡__Kan透↙ 提交于 2020-04-01 04:23:15
电脑发展的初期,只是在美国等英文国家使用,英文只有26个字母和其它字符,一个字节最多可以表示256个字符,如字母“A”用0x41(二进制01000001)表示,字母“a”用0x61(二进制01100001)表示。为了使各家电脑公司生产的电脑统一,美国搞了个国家标准ANSI,一直沿用至今,我们今天用的电脑普通情况下使用的都ANSI编码。 ANSI编码,每个字符占一个字节,但最多只能表示256个字符。 汉字等东亚语言字符怎么办呢?于是采用两个字节共同表示一个汉字的方法。二个字节理论上可以表示65535个字符。 因为ANSI标准是用一个字节的7个位表示一个普通字符,最高位为0(如字母“A”的二进制01000001),所以表示汉字就采用最高位为1来表示。如“中”字就是用0xD6、0xD0表示(二进制11010110、11010000)。 程序员判断一个字符是否为汉字,就是通过最高位是否为1来判断的。 但是,中国大陆的汉字表示方法叫GB码(中国国家标准,如GB2312),中国台湾、香港的汉字表示方法叫BIG5码(大五码,台湾一家民营公司提出),还有韩、日等字符,还是造成了计算机文字表示的不统一。 所以,在W98时代,电脑上网、收发邮件等经常出现乱码的现象(就是文字标准不统一造成的) ANSI编码字符,叫多字节字符 UNICODE编码,每个字符占二个字节。也叫万国码(一种国际标准字符集

Unicode字符集

我们两清 提交于 2020-04-01 04:18:59
Unicode字符集的出现是为了弥补ASCII码只能表示128个字符的限制。在实际应用中,如若我们想显示汉字或日文等等,显然使用ASCII是不可能的。Unicode占用了两个字节,即16位,能表示的字符高达65536。即使像汉字这样庞大的语言,也不过3W左右的字符,所以Unicode足够应付。当然实际中可能很少用到这种字符集,咱们可以将其作为一项拓展知识面来了解下。 在C语言中,我们有如下定义:char c='A';变量c只需要一个字节来保存,并用十六进制数0x41来初始化,0x41是A的ASCII码。 我们也可以定义:char *p = “hello!”;因为windows是一个32位的操作系统,所以指针变量p需要四个字节来保存。当然,后面的字符串需要7个字节来保存。 宽字符 Unicode或者宽字符都没有改变char数据型态在C中的含义。char继续表示1个字节的储存空间,sizeof (char)继续返回1。理论上,C中1个字节可比8位长,但对我们大多数人来说,1个字节(也就是1个char)是8位宽。 C中的宽字符基于wchar_t数据型态,它在几个表头文件包括 WCHAR.H 中都有定义,像这样: typedef unsigned short wchar_t ; 因此,wchar_t数据型态与无符号短整数型态相同,都是16位宽。 要定义包含一个宽字符的变量,可使用下面的语句

winCE下Unicode编码

最后都变了- 提交于 2020-04-01 04:14:30
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

UNICODE字符集

和自甴很熟 提交于 2020-04-01 04:11:41
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

25-字符串

≡放荡痞女 提交于 2020-04-01 02:05:30
字符串是位于双引号中的字符序列 在内存中以"\0"结束,所占字节比实际多一个 注意: (1)可以把一个字符常量赋给一个字符变量,但不能把字符串常量赋给字符变量 (2)C语言中没有字符串变量,可以 用字符数组来存放字符串 1、字符数组的概念   用来存放字符的数组称为字符数组。 2、字符数组定义   形式和前边介绍的数值数组相同    char 数组名[常量表达式] 例如:char ch[5];   字符数组也可以是二维或多维数组。    char 数组名[常量表达式1][常量表达式2];   例如:char ch[2][5]; 即为二维字符数组。 注意:定义字符数组时,应确保数组长度比字符串长度至少多1 3、字符数组初始化 字符数组也允许在定义时作初始化赋值 char ch[4] = {'a', ' ', 'o'}; 赋值后各元素的值为: ch[0] = 'a'; ch[1] = ' '; ch[1] = 'o'; 其中ch[3]未赋值,系统自动赋值为0。 当对全体元素赋初值的时候也可以省去长度说明。例如:   char ch[] = {'f', 'A', ' '}; 这时数组长度自动定为3。 注意:未被使用的元素均被自动初始化为0 4、字符数组的引用   字符数组和普通数组一样,也是通过下标引用。 5、字符串和字符串结束标志   在C语言中没有专门的字符串变量

字符串函数总结

戏子无情 提交于 2020-03-31 21:45:18
//1.echo print_f exit die 输出 //2.explode 使用一个字符串分割另一个字符串 $a='a,b,c'; echo'<pre>'; var_dump(explode(',',$a)); echo'</pre>'; //3.implode 将一个一维数组的值转化为字符串 $arr=array('a','b','c'); echo implode(',', $arr);//a,b,c //4.trim 去除字符串两边空格 ltrim 去除字符串左边空格 rtrim去除字符串右边空格 $var = ' AB '; echo '#',trim($var),'#'; echo '<br/>'; echo '#',rtrim($var),'#'; echo '<br/>'; echo '#',ltrim($var),'#'; //5.md5,sha1加密函数 echo md5(123456); echo sha1(123456); //6.number_format 以千位分隔符方式格式化一个数字 echo number_format(1234567); //7.str_replace 字符串中的(某个用另一个)替换 str_ireplace 忽略大小写的字符串替换 $c='AaBbCc'; echo str_replace('a', '*',$c);//A

PTA数组 查找指定字符

怎甘沉沦 提交于 2020-03-31 10:10:28
#include<stdio.h> #include<string.h> void search(char strSource[],char c)//查找这样的字符和输出功能 { int i=0; int indexPos=-1;//记录位置,-1代表不是正常位置,找的时候如果找到了正常位置就变更为1 while(strSource[i]!='\0')//找到‘\0’结束 { //当前字符是不是我们要找的字符 if(c==strSource[i]) { indexPos=i;//要找到最大的,所以不能break } i++; } //判断这样的字符存在不存在 if(indexPos==-1) { printf("Not Found\n"); }else{ printf("index = %d\n",indexPos); } } int main() { char c; char strSource[81];//不超过80个字符,是不含\0,所以最长是81个字符 c=getchar(); getchar(); gets(strSource);//输入字符到数组里,并且会自动给它加\0 search(strSource,c); return 0; } 来源: https://www.cnblogs.com/jiangzenghui/p/12603111.html

linux光标操作

江枫思渺然 提交于 2020-03-31 07:58:42
看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动。 在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作。 但是事情也不是那么简单,还是需要知道“如何去做”。在单词之间跳转,使用Ctrl+左右键。 Ctrl+a跳到本行的行首, Ctrl+e则跳到页尾。 Ctrl+u删除当前光标前面的文字 ctrl+k-删除当前光标后面的文字 Ctrl+w和Alt+d-对于当前的单词进行删除操作,w删除光标前面的单词的字符,d则删除后面的字符 Alt+Backsapce-删除当前光标后面的单词, 如果删除错误,使用Ctrl+y进行恢复Ctrl+L进行清屏操作 ctrl+a:光标移到行首。 ctrl+b:光标左移一个字母 ctrl+c:杀死当前进程。 ctrl+d:退出当前 Shell。 ctrl+e:光标移到行尾。 ctrl+h:删除光标前一个字符,同 backspace 键相同。 ctrl+k:清除光标后至行尾的内容。 ctrl+l:清屏,相当于clear。 ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history ctrl+u: 清除光标前至行首间的所有内容。 ctrl+w: 移除光标前的一个单词 ctrl+t: 交换光标位置前的两个字符 ctrl+y: 粘贴或者恢复上次的删除 ctrl+d:

1011. 字符串写入的行数

泪湿孤枕 提交于 2020-03-31 04:55:41
1011. 字符串写入的行数 中文 English 把字符串 S 中的字符从左到右写入行中。 每行最大宽度度为100,如果往后新写一个字符导致该行宽度超过100,则写入下一行。 注意:一个字符的宽度不为1!给定一个数组 widths ,其中 widths[0] 是字符 a 的宽度, widths[1] 是字符 b 的宽度,..., widths[25] 是字符'z'的宽度。 问:把 S 全部写完,至少需要多少行?最后一行用去的宽度是多少? 将结果作为长度为2的整数列表返回。 样例 样例1 : 输入: widths = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10] S = "abcdefghijklmnopqrstuvwxyz" 输出: [3, 60] 解释: 每个字符的宽度都是10. 为了把这26个字符都写进去,需要两个整行和一个用去60长度的行。 样例2: 输入: widths = [4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10] S = "bbbcccdddaaa" 输出: [2, 4] 解释: 除'a'以外所有字符都是宽度为10, "bbbcccdddaa"