UNICODE,ANSI和相关操作
来源:互联网 发布:闲鱼淘宝介入卖家赢 编辑:程序博客网 时间:2024/06/03 22:00
A
如果程序定义了_UNICODE宏直接用
WCHAR
TextOut(0,0,str);
否则就需要转换类型
#include
WCHAR
bstr_t
TextOut(0,0,(char*)str1);
Q
A
将ANSI转换到Unicode
(1)通过L这个宏来实现,例如:
(2)通过MultiByteToWideChar函数实现转换,例如:
char
WCHAR
CLSID
long
szWideProgID[lLen]
(3)通过A2W宏来实现,例如:
USES_CONVERSION;
CLSIDFromProgID(
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
//
char
WideCharToMultiByte
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
注意在转换时可能存在的问题:
因为ANSI转UNICODE,如果使用A2W或MultiByteToWideChar(第一个参数是CP_ACP)的话,是根据系统默认的转码表,把转入的ANSI字符串看作Multi-Bytes字符串处理的,如果是中文(中文windows默认就是中文),一个大于0x87的byte可能和下一byte一起被看作一个汉字,然后根据汉字的Unicode编码转换为相同的Unicode汉字,如果找不到相应的编码,一般就用一个默认的字符来取代它(一般是问号“?”),由此看,如果随便把一段数据给他转,转化很复杂而且极可能不可逆,而且你加密过的ANSI码是相当混乱的有很多〉0x87的byte,转换就变得不可逆了。
建议自己直接就这样写:
CHAR
WCHAR
int
while(lpANSI[i]
}
lpUnicode[i]
然后按相同的方法转回来,因为对于0~0x87的ANSI字符串,对应的Unicode码就是相同的16位值,至于其他的,你的字符串反正加了密,没必要转换成显示出来是一样的字符,就按同样的方法处理了,其实如果中间的字符串不用显示或别的,直接reutrn
Q
A
NT系统的内核是unicode代码,通常vc分创建的工程默认都是ansi代码(可以兼容win9x),在nt下ansi程式在调用windows
(0).在vc编译选项上,在vc7.0以上在工程的属性页中的“字符集”选上 "使用
(0).1.改语言定义:
在project
(0).2.改入口函数:
在 "link "页中的 "project
(1)在代码上,处理字符中的多用TCHAR.H中的宏,如strcpy用_tcscpy代替,用TCHAR代char,
用TCHAR
(2)注意调试UNICODE程序时,需要在安装时VC选择所有选项,否则会缺少动态库和相应的.lib文件
Q
A
可以调用Microsoft
调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。
Q
A
函数
PTSTR
PTSTR
BOOL
Q
A
(1)
(2)
(3)
Windows
Windows
Windows
Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。
Q
A
Microsoft公司为Unicode设计了WindowsAPI,这样,可以尽量减少代码的影响。实际上,可以编写单个源代码文件,以便使用或者不使用Unicode来对它进行编译。只需要定义两个宏(UNICODE和_UNICODE),就可以修改然后重新编译该源文件。
_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。
Q
A
数据类型
WCHAR
PWSTR
PCWSTR
对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。
ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。
Q
A
字符集
ANSI
Unicode
MBCS
ANSI/Unicode
ANSI/Unicode
所有新的和未过时的函数在Windows2000中都同时拥有ANSI和Unicode两个版本。ANSI版本函数结尾以A表示;Unicode版本函数结尾以W表示。Windows会如下定义:
#ifdef
#define
#else
#define
#endif
Q
A
字符集
ANSI
Unicode
ANSI/Unicode
Q
A
这将有助于稍稍提高应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在应用程序运行时,它们可能已经被装入RAM。
如:StrCat,StrChr,StrCmp和StrCpy等。
Q
A
(1)
(2)
(3)
(4)
(5)
(6)
malloc(nCharacters
Q
A
通过调用CompareString来实现。
标志
NORM_IGNORECASE
NORM_IGNOREKANATYPE
NORM_IGNORENONSPACE
NORM_IGNORESYMBOLS
NORM_IGNOREWIDTH
SORT_STRINGSORT
Q
A
判断如果文本文件的开头两个字节是0xFF和0xFE,那么就是Unicode,否则是ANSI。
Q
A
用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此
Q
A
Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。
Q
A
#include
char
_bstr_t
WCHAR
str2就是你要的UNICODE码
Q
A
CString
str+= '# ';
CString
WCHAR
int
do
{
str1=str.Left(str.Find( '# ',1));
str=str.Mid(str.Find( '# ',1));
WCHAR
sscanf(str1, "#%d ",&i);
str2[j]=i;
j++;
}while(str1!= " ");
_bstr_t
char
Q
A
参考下面的函数完成
void
{
char
l_sz=new
strcpy(l_sz, "hello
CString
BSTR
l_cBstr=l_cstring.AllocSysString();
CString
delete
cout < < "l_cstring: " < <
cout < < "l_cstring: " < <
l_cstring2+= "aaaa ";
char
l_sz1=l_cstring2.GetBuffer(l_cstring2.GetLength());
cout < < "l_sz: " < <
}
- UNICODE,ANSI和相关操作
- UNICODE,ANSI和相关操作
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- 有关UNICODE、ANSI字符集和相关字符串操作
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- 有关UNICODE、ANSI字符集和相关字符串操作
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- 关于UNICODE,ANSI字符集和相关字符串操作的总结
- [转]有关UNICODE、ANSI字符集和相关字符串操作总结
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- 有关UNICODE、ANSI字符集和相关字符串操作的总结
- Windows环境下Unicode编程总结- -
- 苹果系统:MonoTouch的学习 网址( Hello,Iphone)
- JavaScript简介
- Quaternion.Lerp 插值
- C小笔记
- UNICODE,ANSI和相关操作
- Rigidbody.SweepTest 扫描测试
- 测试需要用到的工具
- 如何有效地解Bug (RED方法)
- quantile-quantile plot (qqplot) of the p-values
- git 使用小技巧
- Object serialization
- Joomla学习–如何在文章中插入模块
- svn的基本使用方法