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转字符串
随机推荐
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved
偶在页面里引入了标签如下: <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core&q ...
- Hadoop 2.6.0集群搭建
yum install gcc yum install gcc-c++ yum install make yum install autoconfautomake libtool cmake yum ...
- DBA_Tablespace表空间的概念和管控(概念)
2014-07-24 Created By BaoXinjian
- int long long范围
unsigned int 0-4294967295 int 2147483648-2147483647 unsigned long 0-4294967295long 2147483 ...
- CF 161D Distance in Tree 树形DP
一棵树,边长都是1,问这棵树有多少点对的距离刚好为k 令tree(i)表示以i为根的子树 dp[i][j][1]:在tree(i)中,经过节点i,长度为j,其中一个端点为i的路径的个数dp[i][j] ...
- 停止某个机房所有机器上包的脚本 pack_idc_stop.py
一.初衷: 鉴于公司的进程包package都是冗余多点部署的,一般一个idc机房有多台机器部署同一个package.当机房网络出问题的时候,我们不得不查到本机房部署了哪些package,并在包发布系统 ...
- memcache 内部原理实现
Lazy Expiration memcached 内部不会监视记录是否过期,而是在 get 时查看记录的时间戳,检查记录是否过期.这 种技术被称为 lazy(惰性)expiration.因此,mem ...
- linux下修改path变量(转载)
比如要把/etc/apache/bin目录添加到PATH中 1.#PATH=$PATH:/etc/apache/bin 使用这种方法,每当登出PATH就会恢复 2.#vi /etc/profile 在 ...
- 怎样查看oracle当前的连接数
SQL> select count(*) from v$session #当前的连接数SQL> Select count(*) from v$session where status='A ...
- java记录在线人数小案例
文件目录: web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...