5.UTF-8 我看了中UTF8解释,才弄明白了utf8大体含义.汉字表示utf8可能需要二字节或三字节,这与内码范围有关.严需要三个字节,它的UTF8的格式是 1110xxxx 10xxxxxx 10xxxxxxx字刚好16个二进位.正好对应严的16位二进位.没有多出的位,不用补0.原作的最后一句话,这16位二进位从格式的后面开始一一对应(即右对齐),UTF8正好填完,没有出现剩下的位,UTF16就可能出现不够填的情况.“多出的位补0”这句话最好去掉,会使人搞不明白.这种不等长码,使英文国家的文本比unicode少了一半,而我们汉字就多了1/2,损了我们,便宜了他们.呵呵.
关于UTF-8编码转换为汉字的 UTF-8变成压缩编码的,转换起来比较2113复杂.我写过一5261个函数,可以实现这个功能:CString UTF8toUnicode(char*s){int len=0;WCHAR*r=new WCHAR[strlen(s)*2];while(s[0]){int bytes=1;if(s[0]&0x80)while(s[0]&(0x80>;>;bytes))bytes+;if(bytes=1)r[len]=s[0];else{r[len]=0;for(char*p=s+(bytes-1);p>;s;p-)r[len]|=((*p)&0x3F)((bytes-(p-s)-1)*6);r[len]|=(s[0]&((1(7-bytes))-1))((bytes-1)*6);}len+;s+bytes;}r[len]=0;char*buffer=new char[len*2+1];ZeroMemory(buffer,len*2+1);WideCharToMultiByte(CP_ACP,NULL,r,len,buffer,1+2*len,NULL,NULL);CString str=buffer;Delete[]r;delete[]buffer;return str;}另外,如果要省4102事,直接用Windows自带的记事本另1653存为就能转了
UTF-8编码共收录了多少个汉字? 中文字符在utf8的编码位置是4e00-9fa5,一共可收录 20901个中文字符。