下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 有关unicode,UTF 8及 ANSI等编码转换

有关unicode,UTF 8及 ANSI等编码转换.doc

有关unicode,UTF 8及 ANSI等编码转换

蒋梅迪
2018-04-12 0人阅读 举报 0 0 暂无简介

简介:本文档为《有关unicode,UTF 8及 ANSI等编码转换doc》,可适用于影视/动漫领域

有关unicode及ANSI等编码转换有关unicode及ANSI等编码转换ANSI美国国家标准码操作系统默认的编码格式但是不同国家有不同的文字由此各个国家制定了自己的国标码如GB等。注意各个国家制定时还是按照ANSI准则进行的:即不属于ASCII(,)的一个文字(符号)占两个字节属于ASCII的占一个字节。这样一来一个大字符串用不同国标码解释的结果就不同(但一点就是属于ASCII部分的字符解释出来是相同的)。ANSI是编码GB等国标码是符合ANSI标准的字符集。字符集与编码是两回事。字符字符是一个符号如:',''◎'等存储时根据不同的编码标准可能占用个或多个字节的空间。不同编码标准下字符占用空间大小不同如Unicode编码所有字符都是个字节编码占用从个到个不等。多字节字符串:字符串在内存中如果“字符”是以ANSI编码形式存放的则一个字符可能使用一个字节或多个字节来表示称这个字符串为ANSI字符串或多字节字符串。Unicode:统一码任何字符都占两个字节。各个国家文字、符号统一编码。VC或其他编程工具对汉字或字符都采用操作系统的编码标准一般都是ANSI标准。这就涉及往其它编码转化的问题。ANSI与Unicode如果ANSI全部属于ASCII(,)则mbstowcs,wcstombs即可。因为Unicode对ASCII(,)的处理是“直接扩展ANSI”,,由一个字节到两个字节。sizetmbstowcs(wchart*wcstr,constchar*mbstr,sizetcount)sizetwcstombs(char*mbstr,constwchart*wcstr,sizetcount)对于不属于ASCII的如汉字使用WideCharToMultiByteMultiByteToWideChar。intMultiByteToWideChar(UINTCodePage,codepageDWORDdwFlags,charactertypeoptionsLPCSTRlpMultiByteStr,stringtomapintcbMultiByte,numberofbytesinstringLPWSTRlpWideCharStr,widecharacterbufferintcchWideCharsizeofbuffer)多字节到宽字符(Unicode)待转换的字符并不一定是多字节字符串(ANSI字符串)uft编码的也可以。CodePage:待转换的代码页如CPACP(ANSI)dwFlags:lpMultiByteStrcbMultiByte:待转换lpWideCharStrcchWideChar:转换完intWideCharToMultiByte(UINTCodePage,codepageDWORDdwFlags,performanceandmappingflagsLPCWSTRlpWideCharStr,widecharacterstringintcchWideChar,numberofcharsinstringLPSTRlpMultiByteStr,bufferfornewstringintcbMultiByte,sizeofbufferLPCSTRlpDefaultChar,defaultforunmappablecharsLPBOOLlpUsedDefaultCharsetwhendefaultcharused)宽字符(Unicode)到多字节新字符串不必是多字节(ANSI)字符集。CodePag:要转换成的代码页如CPACP(ANSI)dwFlags:lpWideCharStrcchWideChar:待转换lpMultiByteStrcbMultiByte:转换完lpDefaultCharlpUsedDefaultChar:失败时缺省字符一个字符串中有如何转换成ANSI,首先到Unicode其次Unicode到ANSI代码如下:intConvToAnsi(CStringstrSource,CStringstrChAnsi){if(strSourceGetLength()<=)returnCStringstrWChUnicodestrSourceTrimLeft()strSourceTrimRight()strChAnsiEmpty()intiLenByWChNeed=MultiByteToWideChar(CP,,strSourceGetBuffer(),strSourceGetLength(),,)intiLenByWchDone=MultiByteToWideChar(CP,,strSourceGetBuffer(),strSourceGetLength(),(LPWSTR)strWChUnicodeGetBuffer(iLenByWChNeed*),iLenByWChNeed)strWChUnicodeReleaseBuffer(iLenByWchDone*)intiLenByChNeed=WideCharToMultiByte(CPACP,,(LPCWSTR)strWChUnicodeGetBuffer(),iLenByWchDone,,,,)intiLenByChDone=WideCharToMultiByte(CPACP,,(LPCWSTR)strWChUnicodeGetBuffer(),iLenByWchDone,strChAnsiGetBuffer(iLenByChNeed),iLenByChNeed,,)strChAnsiReleaseBuffer(iLenByChDone)if(iLenByWChNeed!=iLenByWchDone||iLenByChNeed!=iLenByChDone)returnreturn}Unicode到ANSI其它方法调用CRT函数wcstombs()使用CString构造器或赋值操作(仅用于MFC)使用ATL串转换宏sizetwcstombs(char*mbstr,接受结果ANSI串的字符(char)缓冲。constwchart*wcstr,要转换的Unicode串。sizetcount)mbstr参数所指的缓冲大小。MFC中的CString包含有构造函数和接受Unicode串的赋值操作所以你可以用CString来实现转换。假设有一个Unicode串wszSomeStringCStringstr(wszSomeString)用构造器转换CStringstrstr=wszSomeString用赋值操作转换ATL有一组很方便的宏用于串的转换。WA()用于将Unicode串转换为ANSI串(记忆方法是“widetoANSI”宽字符到ANSI)。实际上使用OLEA()更精确“OLE”表示的意思是COM串或者OLE串。VCIDE下查看Unicode字符的方法unicode字符后面加",su"

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/7

有关unicode,UTF 8及 ANSI等编码转换

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利