关于VS2015 字符集采用Unicode时出现的问题

使用unicode字符集编码的时候总是会提示,这里不对,那里也不对,由于嫌麻烦,就直接把字符集改成宽字符集。

但是感觉,这样永远也无法理解unicode的字符集的使用。

UNICODE:它是用两个字节表示一个字符的方法。比如字符‘A‘在ASCII下面是一个字符,可‘A‘在UNICODE下面是两个字符,高字符用0填充,而且汉字‘程‘在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节
。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。
  MBCS,它是多字节字符集,它是不定长表示世界文字的编码。MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但表示其他文字时就需要用多字节。

那咱们也来初窥一下unicode字符集里的错误解决方案:

1、LPTSTR

  L ---Long

  P  ---Pointer

  T --- 宏,用于指示是否使用unicode字符集

  C ------表示常量

  STR-----表示字符串

LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义:
LPSTR:32bit指针 指向一个字符串,每个字符占1字节
LPCSTR:32-bit指针 指向一个常字符串,每个字符占1字节
LPCTSTR:32-bit指针 指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义
LPTSTR:32-bit指针 每字符可能占1字节或2字节,取决于Unicode是否定义

在中文系统环境下如果启用了Unicode支持,LPTSTR代表的是WCHAR *

2、在启用了Unicode字符集的时候,如果遇到参数不能从const char * 转为LPCWSTR的情况下,

  1)可以更改字符集

  2)字符串使用_T("")表示 char 换成TCHAR

  3) 头文件包含#include<tchar.h>

时间: 2024-08-01 05:53:05

关于VS2015 字符集采用Unicode时出现的问题的相关文章

Java与编码问题串讲之二–如何理解java采用Unicode编码

Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法).由于java采用unicode编码,char 在java中占2个字节.2个字节(16位)来表示一个字符. 这里的Java中是指在JVM中.在内存中.在代码里声明的每一个char.String类型的变量中. 例如: 1 2 3 4 5 6 7 System.out.println(System.getProperty("file.encoding

采用 Unicode 标点属性方式的正则表达式,可以去掉所有的标点符号,

public class Test { public static void main(String[] args) { String str = "!!!??!!!!%*)%¥!KTV去符号标号!!当然,,.!!..**半角"; System.out.println(str); String str1 = str.replaceAll("[\\pP\\p{Punct}]", ""); System.out.println("str1:

多字节字符集与Unicode字符集

在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset). 多字节字符集: 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个 字符,总共表示128个字符,其中包括了 英文字母.数字.标点符号等常用字符.之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号.后来,由于各国语言的加入,

windows 编程 —— 宽字符集 与 Unicode

从ASCII码 到 Unicode 双字节字符集 迄今为止,我们已经看到了256个字符的字符集(ASCII).但中国.日本和韩国的象形文字符号有大约21,000个.如何容纳这些语言而仍保持和ASCII的某种兼容性呢? 解决方案(如果这个说法正确的话)是双字节字符集(DBCS:double-byte character set).DBCS从256代码开始,就像ASCII一样.与任何行为良好的代码页一样,最初的128个代码是ASCII.然而,较高的128个代码中的某些总是跟随着第二个字节.这两个字节

各个国家 不同字符集的unicode 编码范围

原文地址:http://blog.csdn.NET/xzl04/article/details/6307416 [javascript] view plain copy 0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin) 0080-00FF:C1控制符及拉丁文补充-1 (C1 Control and Latin 1 Supplement) 0100-017F:拉丁文扩展-A (Latin Extended-A) 0180-024F:拉丁文扩展-B

VS2015在创建项目时的一些注意事项

一.下面是在创建一个新的项目是我最常用的,现在对他们一一做一个详细的介绍: 1.Win32控制台应用程序我平时编写小的C/C++程序都用它,它应该是用的最多的. 2.名称和解决方案名称的区别:名称是项目的名称,一个解决方案中可以包含多个项目,所以解决方案名称包含项目名称. 3.新建Git存储库(G) (1).把前面的勾去掉 下面是解决方案名称目录下面的目录及文件: 下面是项目名称目录下面的文件: (2). 把前面的勾勾上 下面是解决方案名称目录下面的目录及文件: 多了2个文件. 多的这两个文件不

app开发历程————服务器端生成JSON格式数据,采用Unicode编码,隐藏中文

今天,问以前的同事,他们写接口按什么编码,怎么看到有\u的一些看不懂的内容,一问,原来是信息隐藏,防止信息泄漏. 然后在网上查了Java如何把中文转换成unicode编码,转自:http://blog.csdn.net/sunmenggmail/article/details/27539023 1 package mobi.chenwei.wing.util; 2 3 public class CharacterSetToolkit { 4 5 /** 6 * @param args 7 */

VS2015解决非Unicode编码包含中文字段无法编译的问题

用VS2015打开并编译,定位到编译错误的文件(.cs而不是可视化编辑视图) 文件--高级保存选项--编码 改为 Unicode-代码页1200 这样不论用VS2015/2013/2012/2010 都可以正常编译了 以往版本的VS不会出现这个问题,不知道是否是VS2015的bug

使用gson在解析unicode时遇到的问题

之前在用gson解析的时候未记录下来,所以今天做一个小的总结, 比如遇到像这种"\u003d"的unicode的字符,我们想解码这个字符,用gson可以这样表达 Gson gson=new Gson(); String s2 = "\"{\\\"hi\\\":\\\"\\u003d\\\"}\""; System.out.println("s2:"+s2); String s = gso