字符串在各种编码下的转换

char*   ——》   CStirng

void CharToCString(CString& str, char *chr)
{
    CString pWideChar=_T("");
    //  计算char *数组大小,以字节为单位,一个汉字占两个字节
    int charLen = strlen(chr);
    //计算多字节字符的大小,按字符计算。
    int len = MultiByteToWideChar(CP_ACP,0,chr,charLen,NULL,0);
    //为宽字节字符数组申请空间,数组大小为按字节计算的多字节字符大小
    TCHAR *buf = new TCHAR[len + 1];
    //多字节编码转换成宽字节编码
    MultiByteToWideChar(CP_ACP,0,chr,charLen,buf,len);
    buf[len] = ‘\0‘; //添加字符串结尾,注意不是len+1
    //将TCHAR数组转换为CString
    pWideChar.Format(L"%s",buf);
    //删除缓冲区
    delete []buf;
    str=pWideChar;
}

CString  ——》  char*

void CStringToChar(CString str, char**chr)
{
    *chr = (char*)malloc(wcslen(str) * 2);
    ::WideCharToMultiByte(CP_ACP,0,str,-1,*chr,wcslen(str) * 2,NULL,NULL);
}

Utf-8    ——》  Unicode

void U8ToUnicode(char *Utf8, CString &str)
{
    DWORD dwUnicodeLen;
    TCHAR* pwText;
    dwUnicodeLen = MultiByteToWideChar(CP_UTF8, 0, Utf8, -1, NULL,0);
    pwText = new TCHAR[dwUnicodeLen+1];
    memset(pwText, 0, dwUnicodeLen+1);
    MultiByteToWideChar(CP_UTF8, 0, Utf8, -1, pwText, dwUnicodeLen);
    str.Format( _T("%s"), pwText );
    delete []pwText;
}

Unicode  ——》 Utf-8

char* UnicodeToU8(const CString &src)
{
    int len;
    len = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)src, -1, NULL, 0, NULL, NULL);
    char *szUtf8 = new char[len + 1];
    memset(szUtf8, 0, len + 1);
    WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)src, -1, szUtf8, len, NULL,NULL);
    return szUtf8;
}
时间: 2024-10-06 05:33:51

字符串在各种编码下的转换的相关文章

JavaScript中字符串与Unicode编码的互相转换

JavaScript中字符串与Unicode编码的互相转换 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际编程中请避免 // 字符串 str = "中文"; // 获取字符 char0 = str.charAt(0); // "中" // 数字编码值 code = str.charCodeAt(0); // 20013 // 编码互转 str0 = String.fromC

Linux下查看文件编码,文件编码格式转换和文件名编码转换

linux相关   2008-10-07 10:46   阅读1392   评论0   字号: 大大  中中  小小  如果你需要在Linux中 操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是 UTF-8.下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换. 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set file

【转载】java字符串的各种编码转换

java字符串的各种编码转换 来自:http://www.blogjava.net/rabbit/archive/2008/03/27/189009.html import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US.Unicode字符集的基本拉丁块 */ public static final String US_AS

jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)(转)

版权声明]:版权归作者所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.open-lib.com/Forum/Read_69_1.action 前言: 当jquery ajax在utf-8编码下(页面utf-8,接收utf-8),无任何问题.可以正常post.get,处理页面直接获取正确的内容. 但在以下情况下: GBK -> AJAX POST ->GBK UTF-8 -> AJAX POST ->GBK 后台代码无法获取正确的内容,通常表现为获

如何:通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入

大多数脚本利用发生在用户可以将可执行代码(或脚本)插入您的应用程序时. 默认情况下,ASP.NET 提供请求验证.只要窗体发送包含任何 HTML,该验证都会引发错误. 您可以使用下列方法防止脚本利用: 对窗体变量.查询字符串变量和 Cookie 值执行参数验证. 该验证应包括两种类型的验证:可以将变量转换为所需类型(如转换为整数.日期时间等)的验证,以及所需范围或格式的验证. 例如,应该使用 Int32.TryParse 方法来检查应为整数的窗体发送变量,以验证该变量是否确实为整数. 而且,还应

字符编码之间的转换

VC中实现GB2312.BIG5.Unicode编码转换的方法 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-07-21 这篇文章主要介绍了VC中实现GB2312.BIG5.Unicode编码转换的方法,该功能非常实用,需要的朋友可以参考下 本文主要以实例形式讨论了VC编译环境下,实现字符串和文件编码方式转换的方法,在linux下请使用Strconv来实现.具体方法如下: 一.文件编码格式转换 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Python中的字符串与字符编码

原文地址:点击这里 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的

Python常见字符编码间的转换

学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将是主流,所以Python3为主),今天我们就来一起学习下. 上一篇文章里我已经简述了Python的常见编码了,这里就不再赘述了,还不清楚的小伙伴可以先去看下:     http://www.cnblogs.com/schut/p/8406897.html 一.Unicode 和 UTF-8的纠葛 U

字符串和字符编码unicode

python基础第三天 字符串 str 作用: 用来记录文本(文字)信息,给人类识别用的,为人们提供注释解释说明 表示方式: 在非注释中,凡是用引号括起来的部分都是字符串 ' 单引号 " 双引号 ''' 三单引号 """ 三双引号 空字符串的字面值表示方法 '' "" ''' """ 单引号和双引号的区别: 单引号的内的双引号不算结束符 双引号的内的单引号不算结束符 扩展:因为解释执行器根据单引号为开始符往后找单引号