[VB中对字符串的处理及其扩展]众所周知,VB提供了许多对字符串进行常用操作的函数,像Left、Right、Trim、Mid、Len和InStr等等,能够满足大部分的应用;但对于一些特殊的用法,比如C++中的strrev函数,即将字符串顺序...+阅读
UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。
编码原理
先看这个模板:
UCS-4 range (hex.) UTF-8 octet sequence (binary)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0020 0000-03FF FFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0400 0000-7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx
编码步骤:
1) 首先确定需要多少个8bits(octets)
2) 按照上述模板填充每个octets的高位bits
3) 把字符的bits填充至x中,字符顺序:低位→高位,UTF8顺序:最后一个octet的最末位x→第一个octet位x
根据UTF8编码,最多可由6个字节组成,所以UTF8是1-6字节编码组成
C++代码如下:
int IsTextUTF8(char* str,ULONGLONG length)
{
int i;
DWORD nBytes=0; UFT8可用1-6个字节编码,ASCII用一个字节
UCHAR chr;
BOOL bAllAscii=TRUE; 如果全部都是ASCII, 说明不是UTF-8
for(i=0;i=0x80)
{
if(chr>=0xFC
else if(chr>=0xF8)
nBytes=5;
else if(chr>=0xF0)
nBytes=4;
else if(chr>=0xE0)
nBytes=3;
else if(chr>=0xC0)
nBytes=2;
else
{
return FALSE;
}
nBytes--;
}
}
else 多字节符的非首字节,应为 10xxxxxx
{
if( (chr
}
nBytes--;
}
}
if( nBytes >0 ) 违返规则
{
return FALSE;
}
if( bAllAscii ) 如果全部都是ASCII, 说明不是UTF-8
{
return FALSE;
}
return TRUE;
}
以下为关联文档:
求N个字符串的最长公共子串求N个字符串的最长公共子串,N<=20,字符串长度不超过255。例如:N=3,由键盘依次输入三个字符串为What is local bus ?Name some local buses.local bus is a high speed I/O bus close...
WPS里轻松做出带圈字符WPS里轻松做出带圈字符用WPS Office 2003办小报时遇到制作带圈字符,Examda找到依靠WPS Office 2003自身来解决问题的办法。一、利用“标注文字”实现“带圈字符”功能1、...
玩转金山文字中的带圈字符金山文字2005是金山公司推出新一代办公套装组合WPS Office 2005中的优秀组件之一,它集首字下沉、带圈文字、拼音指南、合并字符、艺术字、域、VBA等许多优秀功能于一身,给我们...
字符功能调用类CharacterOrientedFunction01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH — 键...
金山文字2003中为字符添加上划线大家知道,我们在用字处理软件(如Word、金山文字)编辑文档时,要想给字符添加下划线,只要选中字符,单击“格式”工具栏上的“下划线”按钮(或者直接按“Ctrl+U”组合键)即可。如果...
字符串类数据列类型字符串可以用来表示任何一种值,所以它是最基本的类型之一。我们可以用字符串类型来存储图象或声音之类的二进制数据,也可存储用gzip压缩的数据。下表介绍了各种字符串类型:Tab...
汇编程序在屏幕显示字符的源代码这个一个刚学习汇编的入门实例,想学汇编的朋友可以看看 assume cs:code data segment db ’Wele to masm!’,0 data ends stack segment db 100 dup(0) stack ends ;以上定义...
C++基础:在LUA中使用UNICODE字符串今天测试用LUA调用windows的MessageBoxW函数。需要在LUA中定义UNICODE字符串。LUA的string类型为8位编码,包括数值0,可以编码任意二进制数据。如果编码UNICODE,则需要使用"\"转...
字符表示在实际应用中, 有一些特殊的字符不能直接输入在字符串中, 例如不能在字符串中直接输入引号(会破坏字符串的完整性). 这时我们就需要用到转义字符了(Escaping). 要使用转义字...