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;
    }

}

宽字符至多字符的相互转换方法相关推荐

  1. 字符编码之间的相互转换 UTF8与GBK

    原文地址为: 字符编码之间的相互转换 UTF8与GBK UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它 ...

  2. UTF8与GBK字符编码之间的相互转换

    UTF8与GBK字符编码之间的相互转换   C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值.&qu ...

  3. C++ 宽、窄字符转换

    目录 locale setlocale函数 设置字符编码 单字符宽字符互相转换 mbstowcs函数 wcstombs函数 mbtowc函数 wctomb函数 宽.窄字符转换总结 查看本文前先弄清字符 ...

  4. C++ 宽字符 窄字符 char wchar

    目录 wchar_t和char区别 宽字符 string和wstring的区别 wchar_t和char区别 参考链接 宽窄字符是与一个字符所占的字节数有关,如果一个字符只占一个字节,那么它就是窄字符 ...

  5. 给字符数组赋值的方法

    main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条 ...

  6. asp.net网页出现名称以无效字符开头的解决方法

    asp.net网页出现"名称以无效字符开头"的解决方法 前几天,我在学习asp.net时遇到一个问题:在使用vs2005速成版浏览开发好的网页时,在IE浏览器中直接用http:// ...

  7. php对象怎么拆分字符串数组,在PHP中将字符串拆分为Unicode字符数组的最佳方法是什么?...

    在PHP中,将字符串拆分为Unicode字符数组的最佳方法是什么?如果输入不一定是UTF-8? 我想知道输入字符串中的Unicode字符集是否是另一组Unicode字符的子集. 为什么不直接运行mb_ ...

  8. php检测非法字符的一种方法

    //php检测非法字符的一种方法 $illegal_character="#['!`~\/\\\%^&*()+=\$\#:;<>\]\[{}]#"; $tnam ...

  9. 区分中英文字符的两种方法: 正则和charCodeAt()方法

    最近在为项目写登录注册系列页面, 表单验证无疑是不可缺少的部分, 在这个jQ插件满天飞的web年代, 表单验证倒也不是难事. 但再好的插件, 也并不能做到十全十美, 比如这次用到的我先前介绍过的Van ...

最新文章

  1. 调度框架学习笔记(3)—— 集群调度框架的架构演进过程
  2. Win10系列:JavaScript动画2
  3. 优化缩短关中断的时间
  4. 虚拟串口服务器zenetmanager,Avocent服务器/串口管理 KVM
  5. java中方法的参数传递机制
  6. 配置 aws cli_AWS CLI教程–如何安装,配置和使用AWS CLI了解您的资源环境
  7. 从零开始学视觉Transformer(2):图像与Transformer基础
  8. ThinkPHP 的URL重写时遇到No input file specified的解决方法
  9. Diango博客--20.开启 Django 博客的 RSS 功能
  10. 我们是怎样发出声音的?
  11. Jinja2学习笔记暨官方文档的翻译 -- 转载
  12. 基于Servlet的技术问答网站系统实现(附源码)
  13. 软考初级程序员常见类型题,错题个人笔记
  14. 微信小程序合成海报_微信小程序生成海报实现方式
  15. 区块链赋能金融科技!2018 PPP全球数字资产投资峰会在京召开
  16. 请简述Spring MVC的执行流程
  17. 上位机与下位机交互--让socket不死
  18. Java--文件(File)
  19. 程序员面试100题之六 最长公共子序列
  20. 汉字动图动态图gif格式,无水印 4500个汉字

热门文章

  1. windows键盘在 mac 上的设置
  2. vue 中使用 echart 绘制世界地图中国地图省地图
  3. ToDesk 远程办公 远程控制
  4. Eclipse 创建 Hello World 工程
  5. 如何下载60年代历史地图并进行坐标配准
  6. JS中常用的四种数组拼接方法
  7. (精华)2020年8月7日 微信小程序 实时音视频通话
  8. 百度竞价如何理清思路?一张图让你明白!
  9. Python之——实现自动抢火车票(基于Python3.6+splinter)
  10. 5G技术迅猛发展推动智能制造转型