您的位置:首页 > 编程语言

UNICODE混合编程

2016-05-06 22:38 381 查看
CreateWindowExA

MB unicode

UNICODE mb,

...混合编程, not the same,

NOTIFYICONDATA

HWND const *

Shell_NotifyIcon

显示分很多,情况!

UTF-8

UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

Unix平台中普遍支持UTF-8字符集,HTML和大多数浏览器也支持UTF-8,而window和java则支持UCS-2。

UTF-8的主要优点:

对于欧洲字母字符需要较少的存储空间。

容易从ASCII字符集向UTF-8迁移。

UCS-2

UCS-2是固定长度为16位的unicode字符集。每个字符都是2个字节,UCS-2只支持unicode3.0,所以不支持附加字符。

UCS-2的优点:

对于亚洲字符的存储空间需求比UTF-8少,因为每个字符都是2个字节。

处理字符的速度比UTF-8更快,因为是固定长度编码的。

对于windows和java的支持更好。

UTF-16

UTF-16也是一种16位编码的字符集。实际上,UTF-16就是UCS-2加上附加字符的支持,也就是符合unicode4.0规范的UCS-2。所以UTF-16是UCS-2的严格超集。

UTF-16中的字符,要么是2个字节,要么是4个字节表示的。UTF-16主要在windows2000以上版本使用。

UTF-16相对UTF-8的优点,和UCS-2是一致的。

Oracle从7.0开始提供对Unicode的支持。Oracle个版本的unicode字符集支主要有:

AL32UTF8

一种UTF-8编码的字符集,支持最新的unicode4.0标准。字符长度为1,2或者3个字节,附加字符则为4字节长。

UTF8

支持unicode3.0的UTF-8编码方式。由于附加字符是在unicode3.1中提出的,UTF8不支持附加字符。但是unicode3.0已经为附加字符预留了编码空间,所以即使在UTF8的数据库中插入附加字符,也是可以的,只是数据库会将该字符分隔成两部分,需要占6个字符的长度。所以,如果需要支持附加字符,那么建议将数据库的字符集切换为新的AL32UTF8。

UTF8可用于数据库字符集,也可用于国家字符集。

UTFE

UTFE是基于EBCDIC平台的unicode字符集,就像ASCII平台上的UTF8一样。不同的是,UTFE中,每个字符可能占1,2,3或者4个字节,而附加字符则需要2个4个字节,也就是8个字节来表示。

AL16UTF16

AL16UTF16是一种UTF-16编码的unicode字符集,在Oracle中用于国家字符集。

AL24UTFFSS

该字符集只支持unicode1.1规范,在Oracle7.2~8i版本中使用,目前已经淘汰。

 

CString在Unicode下一个字节占16bit,在ascii下占8bit,改成char数组后在什么环境下都一样的

 

编写程序最好是:同一个源文件既可以在UNICODE下编译,又可以在ANSI下编译

工程--设置--C/C++--预处理器,可以定义标识符,如UNICODE,_UNICODE,标识是按ASCII编译,还是按UNICODE编译

 This file defines ANSI-style macros for accessing arguments

*       of functions which take a variable number of arguments.

*       [ANSI]

*

synchronized..

god explaint everything in binary..

治疗失眠食用粥:山桑粥、莲子芡实粥。 体育锻炼:适当体育锻炼,增强体质,加重躯体疲劳感

dxtrans.h

ANSIToUTF8((char *)fast_writer.write(tasks).c_str(),&utf8_result);
Base64Encode(reinterpret_cast<const unsigned char*>(utf8_result.c_str()),utf8_result.length(),Base64Result);
Replace_plus(Base64Result);
SubmitResult(pci,Base64Result.c_str());
Base64Result.erase();
utf8_result.erase();

the logics..
表达式必须包含指向对象的指针。

good communication,
混,

保留一个较为稳定的版本。
善于总结,保留!、

string和unsigned char *互转,

二进制编码:GET utf8?

当然,有了STL,这些处理会得到很大的简化。我们可以使用 fstream来代替麻烦的fopen fread fclose, 用vector来代替数组。最重要的是用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重。听起来好像很不错。看看下面代码(例程1):

favorate and like,not same,

别人能给你说什么!

static_cast<const unsigned char *>(str.c_str());

对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:

LPARAM lParam;

WORD loValue = LOWORD(lParam);     //取低16位

WORD hiValue = HIWORD(lParam);     //取高16位

对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:

WORD wValue;

BYTE loValue = LOBYTE(wValue);     //取低8位

BYTE hiValue = HIBYTE(wValue);     //取高8位

BYTE 8 and WORD  16 DWORD 32 bit,

unsigned char* pUC = new unsigned char[strContent.size()+1];

strcpy(pUC,strContent.c_str());

// use the pUC here

delete [] pUC;

void, 

自适应大小, semantics,

serialize, 

write so many, does,

别人不予,自取之, depends how you think about the problem, ha,

session meaning,

所见,所得,

从Vista开始,Windows服务(Services)也要分割开来了。如果以前用消息循环在服务之间传递信息的话,现在得换别的办法,例如用命名管道(Named Pipe)了。相关内容可参见:http://msdn2.microsoft.com/en-us/library/bb756986.aspx。

【讨论】真相是CreateProcessWithLogonW句柄泄漏!!!
http://bbs.pediy.com/archive/index.php?t-176330.html
void * is a miracle,

 前者string是常用类型,可以看作char[],其实这正是与string定义中的

_Elem=char相一致。而wstring,使用的是wchar_t类型,这是宽字符,用于满足非ASCII字符的要求,例如Unicode编码,中文,日文,韩文什么的。对于wchar_t类型,实际上C++中都用与char函数相对应的wchar_t的函数,因为他们都是从同一个模板类似于上面的方式定义的。因此也有wcout, wcin, werr等函数。      实际上string也可以使用中文,但是它将一个汉字写在2个char中。而如果将一个汉字看作一个单位wchar_t的话,那么在wstring中就只占用一个单元,其它的非英文文字和编码也是如此。这样才真正的满足字符串操作的要求,尤其是国际化等工作。 

+= 必须这么前后有空格么,

字库,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: