WINDOWS 中 UNICODE的转换
来源:互联网 发布:java sql防注入 编辑:程序博客网 时间:2024/06/05 08:06
#include "Windows.h"
需要引用该头文件,使用 WCHAR、MultiByteToWideChar、WideCharToMultiByte
编码知识:Windows中ANSI编码为本地默认编码,中文为GBK/GB2312,网络传输和LINUX等之中为UTF-8。
UNICODE为当前最通用的一个编码集,UTF-8为表示该编码集的一种方式。所以字符串转换编码时都通过UNICODE为中间编码进行转换。
WINDOWS系统编码:
ANSI :为GBK(GB2312)编码。
WCHAR : 为UNICODE编码
代码页变量:指定执行转换的字符集,这个参数可以为系统已安装或有效的任何字符集所给定的值。
CP_ACP:ANSI字符集。 CP_MACCP:Macintosh代码页。 CP_OEMCP:OEM代码页。
CP_SYMBOL:符号字符集(42)。 CP_THREAD_ACP:当前线程ANSI代码页。
CP_UTF7:使用UTF-7转换。 CP_UTF8:使用UTF-8转换。
int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
参数说明:
CodePage :表示当前为选择该编码集与UNICODE互相转换。
dwFlags : 表示对转换进行额外控制,一般为0
lpMultiByteStr : 指向被转换的多字节字符串
cchMultiByte : 指定由参数 lpMultiByteStr 指向的字符串中字节的个数。如果lpMultiByteStr指定的字符串以空字符终止,可以设置为-1(如果字符串不是以空字符中止,设置为-1可能失败,可能成功),此参数设置为0函数将失败。
lpWideCharStr :指向接收被转换字符串的缓冲区。
cchWideChar :指定由参数lpWideCharStr指向的缓冲区的宽字符个数。若此值为零,函数返回缓冲区所必需的宽字符数,在这种情况下,lpWideCharStr中的缓冲区不被使用。
int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, LPBOOL pfUsedDefaultChar);
参数说明:
CodePage :表示当前为选择该编码集与UNICODE互相转换。
dwFlags : 表示对转换进行额外控制,一般为0
lpWideCharStr :指向将被转换的unicode字符串。
cchWideChar :指定由参数lpWideCharStr指向的缓冲区的字符个数。如果这个值为-1,字符串将被设定为以NULL为结束符的字符串,并且自动计算长度。
lpMultiByteStr :指向接收被转换字符串的缓冲区。
cchMultiByte :指定由参数lpMultiByteStr指向的缓冲区最大值(用字节来计量)。若此值为零,函数返回lpMultiByteStr指向的目标缓冲区所必需的字节数,在这种情况下,lpMultiByteStr参数通常为NULL。
返回值:
如果函数运行成功,并且cchWideChar不为零,返回值是由lpWideCharStr指向的缓冲区中写入的宽字符数;如果函数运行成功,并且cchWideChar为零,返回值是接收到待转换字符串的缓冲区所需求的宽字符数大小。如果函数运行失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。它可以返回下面所列错误代码:
ERROR_INSUFFICIENT_BUFFER;ERROR_INVALID_FLAGS;
ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。
需要引用该头文件,使用 WCHAR、MultiByteToWideChar、WideCharToMultiByte
编码知识:Windows中ANSI编码为本地默认编码,中文为GBK/GB2312,网络传输和LINUX等之中为UTF-8。
UNICODE为当前最通用的一个编码集,UTF-8为表示该编码集的一种方式。所以字符串转换编码时都通过UNICODE为中间编码进行转换。
WINDOWS系统编码:
ANSI :为GBK(GB2312)编码。
WCHAR : 为UNICODE编码
代码页变量:指定执行转换的字符集,这个参数可以为系统已安装或有效的任何字符集所给定的值。
CP_ACP:ANSI字符集。 CP_MACCP:Macintosh代码页。 CP_OEMCP:OEM代码页。
CP_SYMBOL:符号字符集(42)。 CP_THREAD_ACP:当前线程ANSI代码页。
CP_UTF7:使用UTF-7转换。 CP_UTF8:使用UTF-8转换。
int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
参数说明:
CodePage :表示当前为选择该编码集与UNICODE互相转换。
dwFlags : 表示对转换进行额外控制,一般为0
lpMultiByteStr : 指向被转换的多字节字符串
cchMultiByte : 指定由参数 lpMultiByteStr 指向的字符串中字节的个数。如果lpMultiByteStr指定的字符串以空字符终止,可以设置为-1(如果字符串不是以空字符中止,设置为-1可能失败,可能成功),此参数设置为0函数将失败。
lpWideCharStr :指向接收被转换字符串的缓冲区。
cchWideChar :指定由参数lpWideCharStr指向的缓冲区的宽字符个数。若此值为零,函数返回缓冲区所必需的宽字符数,在这种情况下,lpWideCharStr中的缓冲区不被使用。
int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, LPBOOL pfUsedDefaultChar);
参数说明:
CodePage :表示当前为选择该编码集与UNICODE互相转换。
dwFlags : 表示对转换进行额外控制,一般为0
lpWideCharStr :指向将被转换的unicode字符串。
cchWideChar :指定由参数lpWideCharStr指向的缓冲区的字符个数。如果这个值为-1,字符串将被设定为以NULL为结束符的字符串,并且自动计算长度。
lpMultiByteStr :指向接收被转换字符串的缓冲区。
cchMultiByte :指定由参数lpMultiByteStr指向的缓冲区最大值(用字节来计量)。若此值为零,函数返回lpMultiByteStr指向的目标缓冲区所必需的字节数,在这种情况下,lpMultiByteStr参数通常为NULL。
返回值:
如果函数运行成功,并且cchWideChar不为零,返回值是由lpWideCharStr指向的缓冲区中写入的宽字符数;如果函数运行成功,并且cchWideChar为零,返回值是接收到待转换字符串的缓冲区所需求的宽字符数大小。如果函数运行失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。它可以返回下面所列错误代码:
ERROR_INSUFFICIENT_BUFFER;ERROR_INVALID_FLAGS;
ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。
0 0
- WINDOWS 中 UNICODE的转换
- Windows kernel中实现Unicode和UTF-8之间的转换
- Windows编程的Unicode&ANSI字符串转换--摘自VCKBASE
- windows下Unicode与ANSI的相互转换
- windows核心编程---UNICODE和ANSI间的相互转换
- windows上unicode与utf8之间的转换
- windows下utf-8和unicode的相互转换
- Windows编程下, ANSI、UTF8、Unicode之间的转换
- Unicode 字符串的转换
- struts中ApplicationResources.propertices文件的中文-unicode转换方法
- C++中汉字与unicode码的转换
- JAVA中GB2312与Unicode之间的编码转换
- 关于中日文和UNICODE之间编码的转换
- JAVA中最方便的Unicode转换方法
- VS2005中const char *转换为LPCWSTR的方法Unicode
- php中gb2312跟unicode码的转换
- JAVA中最方便的Unicode转换方法
- 在Unicode转换中,_T()与L的区别
- XToDo的使用
- 不同控制器间model传递
- ESP32 beta 测试申请成功
- STM32 BOOT 引脚配置的说明
- 商品详情页系统的Servlet3异步化实践
- WINDOWS 中 UNICODE的转换
- 开发工具网站
- 华为机试——数组循环移位
- iOSMVC设计模式
- Android修改修改JavaBean的属性导致Sqlite没有及时更新的问题
- [poj 2112]Optimal Milking
- Volley之自定义XMLRequest
- 关于IIC和SPI总线
- Eclipse的调试