Utf8-Gb2312互转
来源:互联网 发布:java线程的作用? 编辑:程序博客网 时间:2024/06/06 02:13
#include <stdio.h>
#include <Windows.h>
#include <string.h>
/*************************************************
*将GB2312编码的字符串转为UTF-8编码
*输入:
*p:指向待转码字符串
*返回:
*指向已转码字符串的指针
*过程:
*将GB2312转为Unicode编码
*再将Unicode转为UTF-8
*************************************************/
char* Gb2312ToUtf8(char *p){
DWORD dwNum = MultiByteToWideChar(CP_ACP, 0, p, -1, NULL, 0);
char *psText;
wchar_t *pwText = (wchar_t*)malloc(dwNum*sizeof(wchar_t));
dwNum = MultiByteToWideChar(CP_ACP ,0 ,p ,-1 ,pwText ,dwNum );
dwNum = WideCharToMultiByte(CP_UTF8,0,pwText,-1,NULL,0,NULL,NULL);
psText=(char*)malloc(dwNum*sizeof(char));
dwNum = WideCharToMultiByte(CP_UTF8,0,pwText,-1,psText,dwNum,NULL,NULL);
free(pwText);
return psText;
}
/*************************************************
*将UTF-8编码的字符串转为GB2312编码
*输入:
*p:指向待转码字符串
*返回:
*指向已转码字符串的指针
*过程:
*将UTF-8转为Unicode编码
*再将Unicode转为GB2312
*************************************************/
char* Utf8ToGb2312(char *p){
DWORD dwNum = MultiByteToWideChar(CP_UTF8,0,p,-1,NULL,0);
char *psText;
wchar_t *pwText=(wchar_t*)malloc(dwNum*sizeof(wchar_t));
dwNum = MultiByteToWideChar(CP_UTF8,0,p,-1,pwText,dwNum);
dwNum = WideCharToMultiByte(CP_ACP,0,pwText,-1,NULL,0,NULL,NULL);
psText=(char*)malloc(dwNum*sizeof(char));
dwNum = WideCharToMultiByte(CP_ACP,0,pwText,-1,psText,dwNum,NULL,NULL);
free(pwText);
return psText;
}
int main(){
char *source = "Hello world!"; //英文字符串测试
char *result;
result = Gb2312ToUtf8(source);
printf("%s\n",result);
result = Utf8ToGb2312(result);
printf("%s\n",result);
source="测试";
result = Gb2312ToUtf8(source); //中文字符串测试,不支持UTF-8编码汉字,会出现乱码
printf("%s\n",result);
result = Utf8ToGb2312(result);//GB2312编码的汉字则能正常显示
printf("%s\n",result);
system("pause");
return 0;
}
#include <Windows.h>
#include <string.h>
/*************************************************
*将GB2312编码的字符串转为UTF-8编码
*输入:
*p:指向待转码字符串
*返回:
*指向已转码字符串的指针
*过程:
*将GB2312转为Unicode编码
*再将Unicode转为UTF-8
*************************************************/
char* Gb2312ToUtf8(char *p){
DWORD dwNum = MultiByteToWideChar(CP_ACP, 0, p, -1, NULL, 0);
char *psText;
wchar_t *pwText = (wchar_t*)malloc(dwNum*sizeof(wchar_t));
dwNum = MultiByteToWideChar(CP_ACP ,0 ,p ,-1 ,pwText ,dwNum );
dwNum = WideCharToMultiByte(CP_UTF8,0,pwText,-1,NULL,0,NULL,NULL);
psText=(char*)malloc(dwNum*sizeof(char));
dwNum = WideCharToMultiByte(CP_UTF8,0,pwText,-1,psText,dwNum,NULL,NULL);
free(pwText);
return psText;
}
/*************************************************
*将UTF-8编码的字符串转为GB2312编码
*输入:
*p:指向待转码字符串
*返回:
*指向已转码字符串的指针
*过程:
*将UTF-8转为Unicode编码
*再将Unicode转为GB2312
*************************************************/
char* Utf8ToGb2312(char *p){
DWORD dwNum = MultiByteToWideChar(CP_UTF8,0,p,-1,NULL,0);
char *psText;
wchar_t *pwText=(wchar_t*)malloc(dwNum*sizeof(wchar_t));
dwNum = MultiByteToWideChar(CP_UTF8,0,p,-1,pwText,dwNum);
dwNum = WideCharToMultiByte(CP_ACP,0,pwText,-1,NULL,0,NULL,NULL);
psText=(char*)malloc(dwNum*sizeof(char));
dwNum = WideCharToMultiByte(CP_ACP,0,pwText,-1,psText,dwNum,NULL,NULL);
free(pwText);
return psText;
}
int main(){
char *source = "Hello world!"; //英文字符串测试
char *result;
result = Gb2312ToUtf8(source);
printf("%s\n",result);
result = Utf8ToGb2312(result);
printf("%s\n",result);
source="测试";
result = Gb2312ToUtf8(source); //中文字符串测试,不支持UTF-8编码汉字,会出现乱码
printf("%s\n",result);
result = Utf8ToGb2312(result);//GB2312编码的汉字则能正常显示
printf("%s\n",result);
system("pause");
return 0;
}
- GB2312 与 UTF8 互转
- utf8 GB2312 互转
- Utf8-Gb2312互转
- UTF8 GB2312互转
- UTF8 GB2312
- c#之utf8和gb2312互转
- 关于GBK、GB2312、UTF8
- asp utf8到gb2312
- GB2312 --> UTF8 BY VBSRCIPT
- utf8/gb2312编码
- utf8 转 gb2312
- GB2312/GBK/GB18030/UTF8
- gb2312转utf8
- Mysql UTF8 转为 GB2312
- GBK,GB2312,UTF8是什么?
- GB2312, GBK, utf8
- utf8转gb2312
- iOS GB2312 UTF8转化
- Java中byte转换int时与0xff进行与运算的原因
- HDU--1181 -- 变形课 [DFS]
- cJSON库(构建json与解析json字符串)-c语言
- C#中堆和栈的区别分析
- Django1.5:(二)创建第一个Django应用5
- Utf8-Gb2312互转
- 一个计算机的学习,我觉得,有必要知道编程的思想!
- ubuntu12.04安装SUN java6时出现的错误:update-alternatives: 错误: 无 java 的候选项。
- jsp上传头像以及生成缩略图
- Apache Commons FileUpload实现多文件上传
- 《我的第一本c++书》学习笔记:STL中函数对象
- java 基础正则表达式
- 不同场景下常量的定义方法
- TCP快速重传与快速恢复原理分析