UNICODE字符串与多字节字符串的转换
相互转换的两个函数的声明:
1. 多字节字符串与宽字符串的转换
int MultiByteToWideChar(
UINT CodePage, // code page,一般设为 CP_ACP
DWORD dwFlags, // character-type options,一般为设0
LPCSTR lpMultiByteStr, // string to map,指向一个多字节字符串
int cbMultiByte, // number of bytes in string,多字节字符串的长度(字节数,当以0结尾的时候,也可以设为-1)
LPWSTR lpWideCharStr, // wide-character buffer,存放转换后的宽字符串缓冲区
int cchWideChar // size of buffer,宽字符串缓冲区的最大长度(字符数)
);
2. 宽字符串与多字节字符串的转换
int WideCharToMultiByte(
UINT CodePage, // code page,一般设为 CP_ACP
DWORD dwFlags, // performance and mapping flags,一般为设0
LPCWSTR lpWideCharStr, // wide-character string,指向一个宽字符串
int cchWideChar, // number of chars in string,宽字符串的长度(字符数)
LPSTR lpMultiByteStr, // buffer for new string,存放转换后的多字节字符串缓冲区
int cbMultiByte, // size of buffer,多字节字符串缓冲区的最大长度(字节数)
LPCSTR lpDefaultChar, // default for unmappable chars,转换失败的字符所显示的字符串,一般设为NULL
LPBOOL lpUsedDefaultChar // set when default char used,如果有字符转换失败,则为TRUE,一般设为NULL
);
3. 用法
#include <STDLIB.H>
#include <LOCALE.H>
#include <Windows.h> int main(int argc, char* argv[])
{
setlocale(LC_ALL,""); // 否则无法输出中文 char ansiStr[] = "这是一个ANSI字符串";
printf( "ansiStr: %s\n", ansiStr ); wchar_t wideStr[] = L"这是一个UNICODE字符串";
wprintf( L"wideStr: %s\n", wideStr ); // 转换ANSI字符串到UNICODE字符串
int len = MultiByteToWideChar(CP_ACP, , ansiStr, -, NULL, ); // 先取得转换后的UNICODE字符串所需的长度
wchar_t* buf1 = (wchar_t*)calloc(len, sizeof(wchar_t)); // 分配缓冲区
MultiByteToWideChar(CP_ACP, , ansiStr, -, buf1, len); // 开始转换
wprintf(L"转换后的UNICODE字符串: %s\n", buf1); // 输出转换后的字符串
free(buf1); // 释放缓冲区 // 转换UNICODE字符串到ANSI字符串
len = WideCharToMultiByte(CP_ACP, , wideStr, -, NULL, , NULL, NULL); // 先取得转换后的ANSI字符串所需的长度
char* buf2 = (char*)calloc(len, sizeof(char)); // 分配缓冲区
WideCharToMultiByte(CP_ACP, , wideStr, -, buf2, len, NULL, NULL); // 开始转换
printf("转换后的ANSI字符串: %s\n", buf2); // 输出转换后的字符串
free(buf2); // 释放缓冲区 return ;
}
UNICODE字符串与多字节字符串的转换的更多相关文章
- 关于MultiByteToWideChar与WideCharToMultiByte代码测试(宽字符与多字节字符的转换)以及字符串的转换代码测试
#pragma once #include <stdio.h> //getchar() #include <tchar.h> #include <stdlib.h> ...
- PHP 多字节字符串 函数
参考资料 多字节字符编码方案和他们相关的问题相当复杂,超越了本文档的范围. 关于这些话题的更多信息请参考以下 URL 和其他资源. Unicode materials » http://www.uni ...
- Go strconv模块:字符串和基本数据类型之间转换
本文转自Golove博客:http://www.cnblogs.com/golove/p/3262925.html ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRU ...
- java字符串应用之字符串编码转换
[转载]原文地址:https://blog.csdn.net/zhouyong80/article/details/1900100 无论是对程序的本地化还是国际化,都会涉及到字符编码的转换的问题.尤其 ...
- java中字符串处理、串联和转换的几个常用方法,以及如果需要自己编程实现的具体实施步骤。
What? 如何分类? 如何使用? //String 类提供处理 Unicode 代码点(即字符)(TT观点:指的莫非就是对象的意思.)和 Unicode 代码单元(即 char 值)的方法.(TT观 ...
- Python判断字符串编码以及编码的转换
转自:http://www.cnblogs.com/zhanhg/p/4392089.html Python判断字符串编码以及编码的转换 判断字符串编码: 使用 chardet 可以很方便的实现字符串 ...
- 简单入门PHP中的多字节字符串操作
什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起. 一个字符占几个字节并不是我们表面上看到的那样.正常情况下,一个数字或英文以及英文符号都是占用一个字节的. ...
- Swift3.0语言教程使用Unicode范式标准化获取字符串
Swift3.0语言教程使用Unicode范式标准化获取字符串 Swift3.0语言教程使用Unicode范式标准化获取字符串,在NSString中可以使用4个属性去使用Unicode范式标准化获取字 ...
- 字符串与Objec之间互相转换
字符串与Objec之间互相转换可通过json实现. JSON.parse(str);// 字符串转Json Object JSON.stringify(obj);// Obj转字符串
随机推荐
- 黄聪:如何添加360浏览器(chrome)添加JavaScript例外,禁止网站加载JS
注意:通配符两侧的[]不能省略
- 由csdn开源项目评选中闹出刷票问题想到投票程序的设计
帖子<#CSDN刷票门# 有没有人在恶意刷票?CSDN请告诉我!用24小时监控数据说话!> http://www.cnblogs.com/sanshi/p/3155946.html 网站投 ...
- CF 486D vailid set 树形DP
As you know, an undirected connected graph with n nodes and n - 1 edges is called a tree. You are gi ...
- SQL语句的Select部分只写必要的列
如果Select部分包含不需要的列,这会强制DB2必须进入数据页来得到所请求的特定列,这就要求更多的I/O操作.另外,如果再对这个不需要的列进行排序,就需要创建和传递一个更大的排序文件,相应地会使排序 ...
- java中四种引用类型(转)
今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在网上查资料,感觉收获颇多, ...
- JAVA 处理程序异常,(try、catch、finally),(thorws)
一.try语句: try{//这里写可能出现异常的程序} catch(Exception e){//这里写如果出现异常怎么处理的程序} 二.throws语句 语法:函数方法() throws Exc ...
- 树莓派用USB蓝牙适配器连接蓝牙设备
下面分享如何配置蓝牙设备.1.连接蓝牙适配到Rpi板子usb上,安装相关蓝牙服务器和驱动 lsusb 查看设备是不是被发现 pi @RaspberryPi ~ $ lsusb Bus 001 Devi ...
- Bugtags:移动时代首选 Bug 管理系统
Bug 管理系统之重 回想我们每次开启一个新项目,筹备之初,首要之事就是选择一款 Bug 管理系统.市面上有诸多 Bug 管理系统可供选择:Jira.Redmine.Bugzilla 等.这些系统功能 ...
- sed 使用 删除匹配行
“p” command prints the buffer (remember to use -n option with “p”) “d” command is just opposite, its ...
- Stream语法详解
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...