+ -
当前位置:首页 → 问答吧 → 关于Unicode编码与ASCII编码的问题

关于Unicode编码与ASCII编码的问题

时间:2011-12-10

来源:互联网

在默认情况下,VC6.0是按ASCII编码进行编译;如果我设置了UNICODE编码,程序就是按UNICODE编码方式进行编译。
   
  假如我的程序在vc6默认编码下按ASCII编码编写(即ascii编码,或者说事ansi编码),能够运行成功,然后我发布这个程序,

这个发布后的程序能否运行还要看其所在的操作系统的编码方式,如果其所在的炒作系统是ASCII编码,则程序能够运行,如果是

UNICODE或者其他地区的page code,就不能运行。请问我理解的对么?

如果是理解的是对的,那么我如何才能知道操作系统是什么编码呢,我怎么查看我的操作系统是什么编码?

作者: wonderfullworld   发布时间: 2011-12-10

也不是不能运行 可能运行会有乱码或者崩溃等情况

GetACP可以返回编码

http://www.scalabium.com/faq/dct0082.htm

作者: c_losed   发布时间: 2011-12-10

c_losed 我明白你的意思。也就是说,即使运行成功,也会因为编码的问题出现各种情况。

其他的理解正确么?

作者: wonderfullworld   发布时间: 2011-12-10

肯定是可以运行的,任何语言和版本的Windows都是支持ANSI程序的,不过重点在于能不能正确显示文字。
比如你在中文平台上运行日文ANSI程序,就是乱码,只有修改区域设置或者使用AppLocale来解决。
至于Unicode程序,Win95/98/ME等系统有时可能不能正确支持,需要安装unicows.exe,也就是微软的Unicode支持层才行。不过一般来说现在都建议使用Unicode编程。

作者: Bokutake   发布时间: 2011-12-10

我糊涂了,我在书上看到这么几句原话:

  “您将发现宽字符执行时期链接库中的函数比常规的函数大。出于这个原因,您也许想建立两个版本的程序-一个处理ASCII字符串,另一个处理Unicode字符串。最好的解决办法是维护既能按ASCII编译又能按Unicode编译的单一原始码文件。

……

  TCHAR.H还用一个新的数据型态TCHAR来解决两种字符数据型态的问题。如果定义了_UNICODE标识符,那么TCHAR就是wchar_t:
  C/C++ code
typedef wchar_t TCHAR;
 
否则,TCHAR就是Char:
  C/C++ code
typedef char TCHAR;


  然后还举了好多例子,比如_tcslen、__T(x)等等
   
  这是什么意思?我是这样理解的,在ASCII编码下,就使用strlen,char,等等,不要使用wchar_t,wcslen等等,否则就会报错。是这样么?

  但是我在VC6.0新建了一个Win32 Consolo Application,在默认的情况下(ASCII编码的情况下),使用了wchar_t,也没有报错啊。这个怎么回事,我糊涂了……

作者: wonderfullworld   发布时间: 2011-12-10

操作系统都是unicode的了。

作者: jennyvenus   发布时间: 2011-12-10

热门下载

更多