宽字符至多字符的相互转换方法
1. unicode宽字符至多字符的转换
char *w2c(char *pcstr,const wchar_t *pwstr, size_t len)
{
int nLength=wcslen(pwstr);
//获取转换后的长度
int nBytes = WideCharToMultiByte( // Bytes required for "hello" is 5, does not include null terminator
0, // Specify the code page used to perform the conversion
0, // No special flags to handle unmapped characters
pwstr, // Wide character string to convert
nLength, // The number of wide characters in that string
NULL, // No output buffer given, we just want to know how long it needs to be
0,
NULL, // No replacement character given
NULL );
// make sure the buffer is big enough for this, making it larger if necessary
if(nBytes>len)nBytes=len;
// 通过以上得到的结果,转换unicode 字符为ascii 字符
WideCharToMultiByte( // Writes 5 bytes "hello", does not write a null terminator after that
0, // Specify the code page used to perform the conversion
0, // No special flags to handle unmapped characters
pwstr, // Wide character string to convert
nLength, // The number of wide characters in that string
pcstr, // Put the output ASCII characters at the end of the buffer
nBytes, // There is at least this much space there
NULL, // No replacement character given
NULL );
return pcstr ;
}
2. 把asii字符转换为unicode字符,和上面相同的原理
void c2w(wchar_t *pwstr,size_t len,const char *str)
{
if(str)
{
size_t nu = strlen(str);
size_t n =(size_t)MultiByteToWideChar(CP_ACP,0,(const char *)str,(int)nu,NULL,0);
if(n>=len)n=len-1;
MultiByteToWideChar(CP_ACP,0,(const char *)str,(int)nu,pwstr,(int)n);
pwstr[n]=0;
}
}
宽字符至多字符的相互转换方法相关推荐
- 字符编码之间的相互转换 UTF8与GBK
原文地址为: 字符编码之间的相互转换 UTF8与GBK UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它 ...
- UTF8与GBK字符编码之间的相互转换
UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值.&qu ...
- C++ 宽、窄字符转换
目录 locale setlocale函数 设置字符编码 单字符宽字符互相转换 mbstowcs函数 wcstombs函数 mbtowc函数 wctomb函数 宽.窄字符转换总结 查看本文前先弄清字符 ...
- C++ 宽字符 窄字符 char wchar
目录 wchar_t和char区别 宽字符 string和wstring的区别 wchar_t和char区别 参考链接 宽窄字符是与一个字符所占的字节数有关,如果一个字符只占一个字节,那么它就是窄字符 ...
- 给字符数组赋值的方法
main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条 ...
- asp.net网页出现名称以无效字符开头的解决方法
asp.net网页出现"名称以无效字符开头"的解决方法 前几天,我在学习asp.net时遇到一个问题:在使用vs2005速成版浏览开发好的网页时,在IE浏览器中直接用http:// ...
- php对象怎么拆分字符串数组,在PHP中将字符串拆分为Unicode字符数组的最佳方法是什么?...
在PHP中,将字符串拆分为Unicode字符数组的最佳方法是什么?如果输入不一定是UTF-8? 我想知道输入字符串中的Unicode字符集是否是另一组Unicode字符的子集. 为什么不直接运行mb_ ...
- php检测非法字符的一种方法
//php检测非法字符的一种方法 $illegal_character="#['!`~\/\\\%^&*()+=\$\#:;<>\]\[{}]#"; $tnam ...
- 区分中英文字符的两种方法: 正则和charCodeAt()方法
最近在为项目写登录注册系列页面, 表单验证无疑是不可缺少的部分, 在这个jQ插件满天飞的web年代, 表单验证倒也不是难事. 但再好的插件, 也并不能做到十全十美, 比如这次用到的我先前介绍过的Van ...
最新文章
- 调度框架学习笔记(3)—— 集群调度框架的架构演进过程
- Win10系列:JavaScript动画2
- 优化缩短关中断的时间
- 虚拟串口服务器zenetmanager,Avocent服务器/串口管理 KVM
- java中方法的参数传递机制
- 配置 aws cli_AWS CLI教程–如何安装,配置和使用AWS CLI了解您的资源环境
- 从零开始学视觉Transformer(2):图像与Transformer基础
- ThinkPHP 的URL重写时遇到No input file specified的解决方法
- Diango博客--20.开启 Django 博客的 RSS 功能
- 我们是怎样发出声音的?
- Jinja2学习笔记暨官方文档的翻译 -- 转载
- 基于Servlet的技术问答网站系统实现(附源码)
- 软考初级程序员常见类型题,错题个人笔记
- 微信小程序合成海报_微信小程序生成海报实现方式
- 区块链赋能金融科技!2018 PPP全球数字资产投资峰会在京召开
- 请简述Spring MVC的执行流程
- 上位机与下位机交互--让socket不死
- Java--文件(File)
- 程序员面试100题之六 最长公共子序列
- 汉字动图动态图gif格式,无水印 4500个汉字