`
ai_longyu
  • 浏览: 479371 次
社区版块
存档分类
最新评论

Unicode数据类型(与ANSI关系和相互转化)

 
阅读更多

1,Windows定义Unicode数据类型
WCHAR(Unicode字符)
PWSTR(指向Unicode字符串的指针)
PCWSTR(指向一个恒定的Unicode字符串的指针)
以上都是Unicode字符和字符串。同时windows定义了ANSI/Unicode通用数据类型PTSTR和PCTSTR。
Unicode宏没有前置下划线,_UNICODE宏用于c运行期头文件,而UNICODE用于windows头文件。

2,c对UNICODE的支持
比如常见函数:char *strchr(const char*,int) --------->wchar_t *wcschr(const wchar_t *,wchar_t);
int strcmp(const char*,const char*)-------->int wcscmp(const wchar_t*,const wchar_t*);
例如strcpy--->wcscpy,strlen->wcslen;实际是把wcs取代ANSI前缀str。
3,TChar.h
TChar.h文件唯一作用帮助创建ANSI和UNICODE通用源代码。
如果定义_UNICODE,TCHAR声明为:
typedef wchar_t TCHAR
如果没有定义_UNICODE:
typedef char TCHAR;
分配字符串 TCHAR szString[100];或者TCHAR *szE="hello world";
如果生成UNICODE不是ANSI串,必须改写为:TCHAR *szE=L"hello world";(L意思是UNICODE字符串编译);
同时也可以改写为TCHAR *szE=_TEXT("hello world");
4,Windows编程中建议使用系统函数,而不是c运行字符串函数
使用时候加上ShlApi.h头文件。函数样子为StrCat、StrChr等等(开头字母大写)
5,windows字符串函数
windows提供的UNICODE函数;例如:
lstrcat,lstcmp,lstcmpi、lstcpy、lstrlen。这些函数可以调用UNICODE也可以调用ANSI版本。
如果没有定义了UNICODE,lstcat将扩展为lstcatA,如果定义了UNICODE,扩展为strcatW。

6,Unicode 和ANSI相互转化
char szA[100]; // An ANSI string buffer
WCHAR szW[100];//A Unicode string buffer
sprintf(szA,"%s","ANSI Str"); //Normal sprintf: all string are ANSI
sprintf(szA,"%S",L"Unicode Str"); //Converts Unicode string to ANSI
swprintf(szw,L"%S",L"Unicode Str");// Normal swprintf: all string are Unicode
swprintf(szW,L"%S","ANSI Str"); // Converts ANSI string to Unicode
(严格注意大小写S)
LPTSTR 等价于 char *
LPCSTR 等价于 const char *
7,UNICODE和ANSI之间转化字符(函数参考MSDN)
MultiByteToWideChar (多字节字符串转化为宽字节字符串)
WideCharToMultiBye(宽字符串转为多字节字符串)

实例:

char buf[MAX_PATH];
size_t aLen = strlen( buf ) + 1;

int wLen = MultiByteToWideChar(CP_ACP,0,buf,aLen,NULL,0);

LPWSTR lpw = new WCHAR [wLen];
MultiByteToWideChar(CP_ACP,0,buf,aLen,lpw,wLen);
。。。。。。。。。。。。//使用lpw
delete []lpw;

分享到:
评论

相关推荐

    utf-8、ANSI、Unicode相互转化c++实现

    utf-8、ANSI、Unicode相互转化c++实现 std::string ConverANSI2UTF8(const std::string & str); std::wstring ConverANSI2Unicode(const std::string str); std::wstring ConverUTF82Unicode(const std::string str)...

    windows平台unicode和ansi编码相互转化的两个的函数

    unicode和ansi编码相互转化的两个的函数 window平台下的

    Unicode和ANSI对照表

    就是Unicode和ANSI码的对照文件。 四个文本,两个程序。 文本Unicode是Unicode表 Unicode2ANSI是Unicode文本另存为ANSI unicodeandANSI.txt是对照表的Unicode版本 unicodeandANSI2ANSI.txt是对照表的ANSI版本 有些...

    unicode和ansi编码相互转化的两个的函数

    unicode和ansi编码相互转化的两个的函数 window平台下的

    易语言Ansi与Unicode转换

    易语言Ansi与Unicode转换源码,Ansi与Unicode转换,AnsiToUnicode,UnicodeToAnsi,AnsiToUnicode2,UnicodeToAnsi2,RtlAnsiStringToUnicodeString,RtlUnicodeStringToAnsiString,RtlFreeUnicodeString,RtlFreeAnsiString...

    vs2008下Unicode字符串和ANSI 字符串的相互转换

    vs2008下Unicode字符串和ANSI 字符串的相互转换 一直都很不习惯vs2008下的编程,是因为其对字符串的用法不像VC6那样方便了,其实这也增加了对字符串的安全检查, 这里我花了一下午的时间研究,终于搞懂了Unicode字符...

    ANSI 和Unicode相互转换的类

    自己手动编写的ANSI 和Unicode相互转换的类 功能主要是实现了 字符之间的相互转换 别的没有做 如果有不同的意见可以补充 但是 对与初学者的应用是没有问题 通过了初步测试 希望大家多提意见

    易语言Ansi与Unicode转换源码

    易语言Ansi与Unicode转换源码。@资源源码站。

    Unicode转换为Ansi Ansi转换为Unicode

    这里有如何将unicode转换为ansi的方法,您只需要复制到你的代码就可以了。绝对有用。

    文本文件编码转换:ANSI、Unicode、UTF-8相互转换(修改版)

    ANSI --> Unicode ANSI --> Unicode big endian ANSI --> UTF-8 Unicode --> ANSI Unicode --> UTF-8 UTF-8 --> ANSI UTF-8 --> Unicode UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码...

    ANSI字符串与Unicode字符串的相互转换

    此函数实现由ANSI字符串与Unicode字符串的相互转换,不要错过哦!

    字符串十六进制转换工具(包含ANSI和UNICODE)

    可以将ANSI和UNICODE字符串转换成16进制数据,也可以将16进制数据转换成ANSI和UNICODE字符串,UNICODE字符串还可以选择高位在前还是低位在前,非常的好用。

    unicode 转ansi格式

    unicode 转ansi格式.完整的例子。

    UNICODE码和ANSI码两种编码转换工具

    UNICODE2ANSI.exe是UNICODE码和ANSI码两种编码转换工具。说编码转化可能很多朋友还不是很明白,但是如果说起插入数据库的一句话“”的加密代码“┼攠數畣整爠煥敵瑳∨≮┩>”,相信很多朋友都有所耳闻。它就是一个...

    lua utf8 unicode ansi 转换

    a2w(ansi to unicode) u2w(utf8 to unicode) w2a(unicode to ansi) w2u(unicode to utf8) u2a(utf8 to ansi) a2u(ansi to utf8) bstr(bytes of str) help(show this) wunoman@qq.com 2012/03/06

    批量Ansi文本与Unicode文本转换工具

    HTML->TXT转换、文件合并、TXT文件段落合并、TXT文件分行、编码(GB/GBK/Big5/Shift-JIS/Unicode)转换(只能用于Win 2k/XP)、文本替换、HTML代码整理、文件切分、文本提取、正则表达式、TCR批量压缩/解压.

    Ansi与Unicode

    详解宽字节Unicode与窄字节Ansi的含义,区别,与使用!

    Unicode转换Ansi字符

    将Unicode转换成Ansi或者将Ansi转换成Unicode的几种编码格式:十进制、十六进制及网页格式。从Unicode的几种形式转换的时候,已经做了判断不需要选择格式,可以混合。希望有帮助!

    unicode转ansi源码 带码表 不使用系统api

    unicode2ansi码表1.txt------码表1 unicode2ansi工程用的就是这个 GB2312到UNICODE码表.txt----另一份码表 更全一点 unicode2ansi---------------vc工程 unicode到ansi编码转换的例子,有函数,有调用 bldunitable--...

    ahk脚本unicode ansi转换

    ahk脚本,支持unicode ansi等相互转换,支持url中中文处理

Global site tag (gtag.js) - Google Analytics