unicode to stringString转utf8String,有什么函数么

UnicodeString&-&UTF8String
有这个函数么?
回复讨论(解决方案)
http://blog.csdn.net/feisy/article/details/
//Unicode&转&Utf8&&&
110.std::string&Unicode2Utf8(const&std::wstring&&widestring)&&
112.&&&&int&utf8size&=&::WideCharToMultiByte(CP_UTF8,&0,&widestring.c_str(),&-1,&NULL,&0,&NULL,&NULL);&&
113.&&&&if&(utf8size&==&0)&&
114.&&&&{&&
115.&&&&&&&&throw&std::exception(&Error&in&conversion.&);&&
116.&&&&}&&
118.&&&&std::vector&char&&resultstring(utf8size);&&
120.&&&&int&convresult&=&::WideCharToMultiByte(CP_UTF8,&0,&widestring.c_str(),&-1,&&resultstring[0],&utf8size,&NULL,&NULL);&&
122.&&&&if&(convresult&!=&utf8size)&&
123.&&&&{&&
124.&&&&&&&&throw&std::exception(&La&falla!&);&&
125.&&&&}&&
127.&&&&return&std::string(&resultstring[0]);&&
可以直接赋值:UTF8String=UnicodeString,不需要专门的转换
UTF8String&u8=&北京&;
UnicodeString&u=u8;
ShowMessage(u);&&//此处为空值
我看有的文章说utf8String&和unicodeString&可以相互转化,但是我实验了一下,貌似不行呢
UnicodeString&转&UTF8String&用&UTF8Encode&函数
UTF8String&转&UnicodeString&用&UTF8ToUnicodeString&函数
UnicodeString&str&=&&腰杆真硬&;
UTF8String&ustr&=&UTF8Encode(str);
ShowMessage(ustr);
楼上的,这样改就可以了
UTF8String&u8=UnicodeString(&北京&);&//必须先告诉编译器,你的字符串的编码
UnicodeString&u=u8;
ShowMessage(u);&&2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
2017年1月 Delphi大版内专家分月排行榜第二2014年10月 Delphi大版内专家分月排行榜第二2014年9月 Delphi大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。本帖子已过去太久远了,不再提供回复功能。ansi utf8与unicode互转函数
乱码伤不起啊。。。。
下面是转换代码。。。
inline wstring utf8ToUnicode(string str)
&&& //UTF8 to Unicode
&&& size_t wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, str.c_str(), str.length(), NULL, 0);
&&& //分配空间要给''留个空间,MultiByteToWideChar不会给''空间
&&& wchar_t* wszString = new wchar_t[wcsLen + 1];
&&& memset(wszString, 0, sizeof(wchar_t)*(wcsLen + 1));
&&& //转换
&&& ::MultiByteToWideChar(CP_UTF8, NULL, str.c_str(), str.length(), wszString, wcsLen);
&&& wstring wstr= wszS
&&& delete wszS
inline string unicode2utf8(wstring wstr)
&&& len = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);&
&&& char *szUtf8=new char[len*2 + 2];
&&& memset(szUtf8, 0, len * 2 + 2);
&&& WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)wstr.c_str(), -1, szUtf8, len, NULL,NULL);
&&& string str= szUtf8;
&&& delete szUtf8;
摘自 ccSec | cc@insight-labs.org您所在的位置: &
在Unicode和普通字符串之间转换
在Unicode和普通字符串之间转换
人民邮电出版社
《Python Cookbook(第2版)中文版》第1章文本,本章包含了操纵文本的一系列方法和窍门,包括了合并、过滤、格式化字符串以及在整个文本中对部分字符串的替换,还有Unicode的处理。本节为大家介绍在Unicode和普通字符串之间转换。
1.21& 在Unicode和普通字符串之间转换
感谢:David Ascher、Paul Prescod
需要处理一些可能不符合ASCII字符集的文本数据。
普通字符串可以用多种方式编码成Unicode字符串,具体要看你究竟选择了哪种编码:unicodestring&=&u"Hello&world"&#&将Unicode转化为普通Python字符串:"encode" &utf8string&=&unicodestring.encode("utf-8") &asciistring&=&unicodestring.encode("ascii") &isostring&=&unicodestring.encode("ISO-8859-1") &utf16string&=&unicodestring.encode("utf-16") &#&将普通Python字符串转化为Unicode:"decode" &plainstring1&=&unicode(utf8string,&"utf-8") &plainstring2&=&unicode(asciistring,&"ascii") &plainstring3&=&unicode(isostring,&"ISO-8859-1") &plainstring4&=&unicode(utf16string,&"utf-16") &assert&plainstring1&==&plainstring2&==&plainstring3&==&plainstring4&
如果想处理含有非ASCII字符的文本数据,首先要懂一些Unicode-什么是unicode、unicode怎么工作、Python如何处理unicode。前一节提供了少量却很重要的指导,本节将在这个话题下继续深入讨论。
不用在完全了解Unicode的一切之后,才去处理现实世界中的有关unicode的问题,但是一些基本知识却是不可或缺的。首先,需要理解字节和字符之间的区别。在过去的以ASCII字符为主体的语言以及环境中,字节和字符被认为是同一种东西。一个字节可以有256个不同的值,因此环境被限制为只能处理不超过256个不同的字符。而另一方面,Unicode则支持成千上万的字符,那也意味着每个unicode字符占用超过1个字节的宽度。因此,首先需要搞清楚字符和字节之间的区别。
标准的Python字符串实际上是字节串,这种字符串中的每个字符,长度为1,实际上就是一个字节。我们还可以用Python的标准字符串类型的其他一些术语来称其为8位字符串或者普通字符串。在本节中,我们称这种类型的字符串为字节串,以此来提醒你它们的单字节的特点。
Python的Unicode字符是一个抽象的对象,它足够大,能够容纳任何字符,可以同Python的长整数进行类比。完全无须担心它的内部表示;只有当你试图将它们传递给一些基于字节处理的函数时-比如文件的write方法和网络socket的send方法,unicode字符的表示才会成为一个问题。基于这个原因,必须选择以何种方式将这些字符表示成字节。将unicode字符串转化成字节串被称为对该字符串编码。同样的,如果从一个文件、socket或者其他基于字节的对象中载入一个unicode字符串,必须对其解码,将其从字节转成字符。
从unicode对象转化成字节串有很多方法,这些方法都被称为某种编码。由于一系列历史的、政治的、以及技术上的原因,没有哪种编码是"正确"的。每种编码都有个大小写不敏感的名字,这个名字可以被传递给encode和decode函数作为参数。下面给出一些应该知道的编码。
UTF-8编码可以应用于任何Unicode字符。它也向后兼容ASCII,所以一个纯粹的ASCII文件也可以被认为是一个UTF-8文件,而只使用ASCII字符的UTF-8文件,也完全等同于使用这些字符的ASCII文件。这个属性使得UTF-8具有极好的向后兼容能力,特别是对一些老的UNIX工具来说。UTF-8是迄今为止UNIX上最具主导性的编码,同时也是XML文档的默认编码。UTF-8的主要弱点是,对于一些东方的语言文本,它的效率比较低。
UTF-16是微软操作系统和Java环境喜爱的编码。它对于西方语言效率略低,但对于东方语言却更有效率。UTF-16有一个变种,被称为UCS-2。
ISO-8859系列的编码是ASCII的超集,每种编码都能处理256个不同的字符。这些编码不能支持所有的Unicode字符;它们只支持一些特定的语系或语言。ISO-8859-1,也以"Latin-1"的名字为人所知,覆盖了大多西欧和非洲的语言,但不包括阿拉伯语。ISO-8859-2,也被称为"Latin-2",覆盖了很多东欧的语言,比如匈牙利和波兰。ISO-8859-15,现在在欧洲非常流行,基本上它和ISO-8859-1一样,但增加了对欧洲货币符号的支持。
如果想对所有的Unicode字符编码,你可能需要用UTF-8。当需要处理别的程序或者输入设备用其他编码创建的数据时,你才可能需要用到其他编码,或者相反,在需要输出数据给你的下游程序或者输出设备,而它们采用的是另一种特定的编码时。第1.22节展示了一个例子,这个例子中,可以看到怎样通过程序的标准输出来驱动其他下游程序或设备。
Unicode是一个宽泛的主题,值得推荐的书有:Unicode: A Primer,Tony Graham著(Hungry Minds, Inc.),更多细节见;以及Joel Spolsky写的一篇短小但透彻的文章,"The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses)!"具体可见。另外参阅Library Reference和Python in a Nutshell中关于内建str和unicode类型、unidata模块和codecs模块;以及第1.20节和第1.22节。
【责任编辑: TEL:(010)】&&&&&&
关于&&&&的更多文章
本书介绍了Python应用在各个领域中的一些使用技巧和方法,其主题
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 9人学习过讲师: 28人学习过讲师: 18人学习过
尼古拉?特斯拉是19世纪末20世纪初那场改变了人们日常
这是一本写给高中生、大学生以及所有希望提高分析思维
本书是企业应对不断变化的市场环境、客户期望和新技术
本书详细介绍脚本语言Groovy,首先介绍Groovy语言的基本特性,包括讨论Groovy方法、程序闭包、列表、映射以及对类和继承的支持,
51CTO旗下网站}

我要回帖

更多关于 unicode string 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信