看书看到 non-Unicode环境,Unicode环境,这到底有什么区别,有什么影响,写程序的时候应该怎么做呢?

解决方案 »

  1.   

    一般多语言版本的时候,建议用Unicode,其它时候,无所谓
      

  2.   


    多语言版本指什么?指OS还是指程序,还是其它什么的?是不是有中文就必须要设为Unicode
      

  3.   

    <<Windows核心编程>>第2章关于UINCODE有很详细的说明。
    你在写程序时遵循这样的原则,将会使的你程序很好的兼容ANSI和UNICODE

     • 将文本串视为字符数组,而不是chars数组或字节数组。
     • 将通用数据类型(如TCHAR和PTSTR)用于文本字符和字符串。
     • 将显式数据类型(如BYTE和PBYTE)用于字节、字节指针和数据缓存。
     • 将TEXT宏用于原义字符和字符串。
     • 执行全局性替换(例如用PTSTR替换PSTR)。
     • 修改字符串运算问题。例如函数通常希望你在字符中传递一个缓存的大小,而不是字节。
     这意味着你不应该传递sizeof ( szBuffer) ,而应该传递( sizeof(szBuffer)/sizeof(TCHAR)。另外,
     如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那么请记住要按字节来
     分配内存。这就是说,应该调用malloc(nCharacters *sizeof(TCHAR)), 而不是调用malloc(nCharacters)。
      

  4.   

    要写能显示多语言的程序就必须设置为UINCODE,要不然有些语言没法正常显示。
      

  5.   

    Unicode可以比较好的支持英文,中文,等各种语言...其次操作系统从2000开始也都是unicode 字符集,所以推荐使用
      

  6.   

    拿系统来说,自从NT 开始,windows 的核心函数都是传入Unicode字符串。如果传入ANSI 字符,Windows 会将ANSI字符串换成Unicode形式,产生额外的开销。
      

  7.   

    内核只支持unicode,非unicode会自动被系统转换成unicode传进内核。
      

  8.   

    系统内核就是Unicode的,楼主可以看看Unicode是什么。如果你要多语言的支持程序,那么还是Unicode吧
      

  9.   

    那是不是只要遵守这样的规则就是Unicode代码了?还是说需要加上象static 这样的修饰符??????????
      

  10.   

    一字节和两字节区别还要小心亚洲也有个标准叫MBCS(是这个吧?)也是两字节跟UNI不兼容
    小心的做法是用宏T来定义字串SETTING加上MBCS和UNI这样系统自动识别
      

  11.   

    ansi已经可以放弃了,你难道还想支持win98?
      

  12.   

    unicode编码中,一个中文汉字就是一个字符,要用两个字节表示才能表示完, ANSI一个字符用一个字节表示,
      

  13.   

    那如果我用char a[1024] 在windows XP里运行,难道为被转换成每个字符二字节的形式存储????