说明:

记事本txt有四种编码方式,分别为:UTF-8、ANSI、Unicode和Unicode big endian,当进行写操作,创建的txt编码格式,与写入汉字的编码方式相同;如果写入的汉字是不同的编码方式,此时创建的txt中,会出现乱码,所以需要把汉字转化为同一编码方式。

本文主要介绍:把汉字编码方式,由ANSI方式转化为UTF-8方式:

一、ANSI转化为UTF-8程序:

  1. CString ToUTF8(const wchar_t* buffer, int len)  //返回类型为CString
  2. {
  3. int size = ::WideCharToMultiByte(CP_UTF8, 0, buffer, len, NULL, 0, NULL,
  4. NULL);
  5. if (size == 0)
  6. return "";
  7. std::string newbuffer;
  8. newbuffer.resize(size);
  9. ::WideCharToMultiByte(CP_UTF8, 0, buffer, len,
  10. const_cast<char*>(newbuffer.c_str()), size, NULL, NULL);
  11. //如需返回string类型,直接 return newbuffer
  12. TCHAR outstr[64]; //string 转化为CString返回
  13. CString strTemp;
  14. memset(outstr, '\0', sizeof(outstr));
  15. memcpy(outstr,newbuffer.c_str(),newbuffer.size());
  16. strTemp.Format("%s",outstr);
  17. return strTemp;
  18. }
CString ToUTF8(const wchar_t* buffer, int len)  //返回类型为CString
{
int size = ::WideCharToMultiByte(CP_UTF8, 0, buffer, len, NULL, 0, NULL,
NULL);
if (size == 0)
return "";
std::string newbuffer;
newbuffer.resize(size);
::WideCharToMultiByte(CP_UTF8, 0, buffer, len,
const_cast&lt;char*&gt;(newbuffer.c_str()), size, NULL, NULL); //如需返回string类型,直接 return newbuffer TCHAR outstr[64]; //string 转化为CString返回
CString strTemp;
memset(outstr, '\0', sizeof(outstr));
memcpy(outstr,newbuffer.c_str(),newbuffer.size());
strTemp.Format("%s",outstr);
return strTemp;

}

二、函数调用形式

  1. wstring text =  L"汉字";
  2. CString strTemp = ToUTF8(text.c_str(),text.size());
wstring text =  L"汉字";
CString strTemp = ToUTF8(text.c_str(),text.size());

ANSI编码方式转化为UTF-8方式的更多相关文章

  1. Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)

    Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...

  2. ANSI编码

    ANSI编码 ANSI简介 不同的国家和地区制定了不同的标准,由此产生了 GB2312.GBK.Big5.Shift_JIS 等各自的编码标准.这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸 ...

  3. 了解ANSI编码

    ANSI:American National Standards Institute:美国国家标准学会 ANSI编码:为使计算机支持更多语言,不同国家和地区分别制定了符合自身的外文字符延伸编码方式(如 ...

  4. 刨根究底字符编码之七——ANSI编码与代码页(Code Page)

    ANSI编码与代码页(Code Page) 一.ANSI编码 1. 如前所述,在全世界所有国家和民族的文字符号统一编码的Unicode编码方案问世之前,各个国家.民族为了用计算机记录并显示自己的字符, ...

  5. hibernate检索方式(HQL 检索方式,QBC 检索方式,本地 SQL 检索方式)

    hibernate有五种检索方式,这儿用 单向的一对多的映射关系 例子,这儿有后三种的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 ...

  6. 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控

    原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触 ...

  7. 如何将lrc歌词文件批量转换为ANSI编码?

    有些MP3.MP4或学习机只能播放ANSI编码的歌词文件,可是从网站上下载的歌词大多是UTF-8或者其它机器支持不了的编码,如何批量将这些lrc歌词文件转换成ANSI编码的文件呢? 工具/原料 萍客T ...

  8. UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现

      UserView--第二种方式(避免第一种方式Set饱和),基于Spark算子的java代码实现   测试数据 java代码 package com.hzf.spark.study; import ...

  9. Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式

    Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public st ...

随机推荐

  1. WPF 线程中异常导致程序崩溃

    一般我们WPF中都加全局捕获,避免出现异常导致崩溃. Application.Current.DispatcherUnhandledException += Current_DispatcherUnh ...

  2. LeetCode409Longest Palindrome最长回文串

    给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不 ...

  3. stream的filter用法

    Person p1 = new Person("张三", new BigDecimal("23.0"));Person p2 = new Person(&quo ...

  4. mongodb集群搭建过程记录

    mongodb集群搭建花费比较长的时间,在此记录下过程,方便以后使用 一 软件环境 系统:ubuntu 18.04,mongodb 社区版4.2 https://docs.mongodb.com/ma ...

  5. 学习Python笔记---列表简介

    列表: 列表由一系列按特定顺序排列的元素组成.你可以创建包涵字母表中所有字母.数字0-9或所有家庭成员姓名的列表:也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 列表 在Python中, ...

  6. Leetcode61. Rotate List旋转链表

    给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4-& ...

  7. 【Codeforces Round #430 (Div. 2) C】Ilya And The Tree

    [链接]点击打开链接 [题意] 给你一棵n个点的树,每个点的美丽值定义为根节点到这个点的路径上的所有权值的gcd. 现在,假设对于每一个点,在计算美丽值的时候,你可以将某一个点的权值置为0的话. 问你 ...

  8. QT_string转char*

    char* convertQString2char(const QString &str) { QByteArray ba = str.toUtf8(); char * pathChar = ...

  9. Phpstrom学习笔记

    1.用*标识编辑过的文件 File - Editor – General - Editor Tabs 选中Mark modifyied tabs with asterisk

  10. mac 下的 homebrew

    如果安装了macport 就不能安装homebrew ,必须先卸载macport $ sudo port -f uninstall installed$ sudo rm -rf \/opt/local ...