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

Posted lobster 小IT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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> 

 

以上是关于关于VS2015 字符集采用Unicode时出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 VS 2015 打开 VS 2017 项目时出现语法错误 [重复]

python - 使用 Django 将 Unicode 字符存储到 MySQL 时出现问题

在 VS 2015 和 VS 2013 上运行同一段代码时出现问题

创建新项目时出现 vs2015 ctp6 错误

使用继承构造函数时出现 VS2015 内部编译器错误

SQLSRV 致命错误:翻译 Unicode 时出现严重错误