从vs软件中复制中文的时候是乱码,也不知道怎么解决,小编带来的就是VS粘贴word时中文乱码修复工具,可以很好的解决这个问题,需要的朋友快来下载吧。
修复vs复制乱码问题
VS粘贴word时中文乱码修复工具功能介绍
部分VS版本复制代码到word时, 中文注释变成乱码.就做了个小工具实时修复 ,
以前在网上也下载过类似工具, 但每次都要点一下,很麻烦,
本工具可自动监控剪切板, 自动修复, 可谓全自动了.
使用方法
下载后直接点击开始监控
不需要时点击停止
vs2010上中文显示乱码问题
常见的字符编码有:
1.ASCII码是单字节编码,编码范围是0x00-0x7F(最高位保持为0)。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符,只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。
2.GB2312 是对 ASCII 的中文扩展,正式的名称为MBCS(Multi-Byte Chactacter System,多字节字符系统)按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了
3.Unicode,unicode是全世界统一的编码规则,但是这个只规定了各种字符的数字编码(相当于一种标准),具体实现的存储方式有utff-8,utf-16,utf-32等形式。各种形式有不同的存储和与unicode代码的映射规则。
现在大部分具有国际化特征的软件核心字符处理都是以Unicode 为基础的,在软件运行时根据当时的Locale/Lang/Codepage 设置确定相应的本地字符编码设置,并依此处理本地字符。在处理过程中需要实现Unicode 和本地字符集的相互转换,甚或以Unicode 为中间的两个不同本地字符集的相互转换。这种方式在网络环境下被进一步延伸,任何网络两端的字符信息也需要根据字符集的设置转换成可接受的内容。
通常android手机和ipone手机上显示中文采用的编码是Unicode(UTF-8 带签名)
所以要想中文字体在手机上面显示需要把字符设置成Unicode(UTF-8 带签名),方法如下(vs2010):
1.选中字符所在的文件,
2,选择“文件”菜单
3.选择“高级保存选项” ,然后可以设置该文件的字符编码了。
如果把字符编码设置成 Unicode(UTF-8 带签名),那么在vs2010中运行游戏,发现中文显示乱码了
为什么?那是因为vs2010用的编码方式是GB2321,这时我们需要把Unicode编码转换成为GB2312编码
怎么呢,首先:定义wstring或者wchar_t,比如:static const wstring W_GAMEOVER_TITLE = L"数据统计";
static const wchar_t* W_KILL_LABEL = L"本局杀死敌人数: %d人";
注意:wchar_t类型主要用在国际化程序的实现中,但它不等同于unicode编码。unicode编码的字符一般以wchar_t类型存储。
void ConvertGBKToUtf8(CString& strGBK) {
int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
unsigned short * wszUtf8 = new unsigned short[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len);
len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szUtf8=new char[len + 1];
memset(szUtf8, 0, len + 1);
WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL);
strGBK = szUtf8;
delete[] szUtf8;
delete[] wszUtf8;
}
void ConvertUtf8ToGBK(CString& strUtf8) {
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
unsigned short * wszGBK = new unsigned short[len+1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);
strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
- PC官方版
- 安卓官方手机版
- IOS官方手机版