我想问一下关于UTF-8编码的问题,我有一个程序想修改以支持国际版韩文、日文操作系统等,是通过UNICODE 16好呢,还是UTF-8好呢?这两个在编程上有什么不同之处?
如果修改为UNICODE 16我知道应该把Char 修改为TCHAR等等(WIndows 核心编程一书上提到了),
但如果修改为UTF-8呢,应该如何去动手去改?
UNICODE 16需要设置编译环境:UNICODE,_UNICODE和入口点wWinMainCRTStartup
UTF-8呢? 

解决方案 »

  1.   

    用UTF16
    UTF-8太占存储空间了
      

  2.   

    混分~~unicode 包括全球所有已知的 电子化的字符~还有富裕的~
      

  3.   

    假设使用UTF-8的话,在编程过程中,跟使用UNICODE有什么区别?我看了很多文章都是网页方面的编码问题。VC方面的好象很少很少。
      

  4.   

    应该用UNICODE,我们公司的国际化版本就是用UNICODE
      

  5.   

    http://www.regexlab.com/zh/encoding.htm
      

  6.   

    无论是utf-16还是utf8都是对unicode传输规则的一个标准。这个标准与所支持的操作系统是没有关系的,因为对于你所需要处理的字符来说,最后你都必须要把它变为标准的unicode编码。
    楼主的意思可能是对于文本的处理,那么一般来说2个都需要支持。对于windows操作系统来说,一般都是在本地内存中使用unicode,在底层使用本地编码,因此编程的时候要具体问题具体分析。
      

  7.   

    http://www.linuxforum.net/books/UTF-8-Unicode.html
      

  8.   

    我这样理解的不知道对不对
    utf-8适合用于网络传输
    unicode用于windows应用程序国际化,
    linux就不知道了
      

  9.   

    你可以在网上查查有关unicode,ucs,utf-8,utf-16的来历以及区别。总的来说unicode是编码规范,就好比我国的gb2312一样,但是由于它是2(4)字节的编码,而很多操作系统的内部都是使用ascii码的,对于这种2(4)字节的编码有可能出现错误(比如编码为00xx的情况在内存中为xx00,而0在内存的字符串处理中表示结束),于是为了兼容原来的机制以及程序,就出现了传输规范,这就是utf-8或者utf-16.请参考下面的网页http://www.linuxforum.net/books/UTF-8-Unicode.html
    所谓国际化仅仅是为了能够让字符(文件名)在终端上正确的显示出来,你如果要支持所有的操作系统,那么你必须知道这个操作系统的本地编码是什么。所谓本地编码一般指的是当前操作系统文件名的存储所用的编码,有可能是ascii,也有可能是gb2312,也有可能是unicode或者其他的非unicode编码。那你的程序,也就是你在进行字符串处理的时候你准备用什么样的编码。一般我们不可能在这个操作系统上用这个操作系统的本地编码,在那个操作系统上用那个操作系统的本地编码,因此一般来说统一使用unicode编码(用2字节表示一个字符)。然后再为当前的操作系统准备一张双向的转换码表,比如说现在要将某个文件改名,那么可以将要改的目标名称(unicode)转换为本地编码传给系统,然后再刷新这个文件名,这就需要把系统传递给程序的本地编码先转换为unicode然后再放入内存的数据结构中等待下一步的操作。
      

  10.   

    如果是WINDOWS还是UNICODE好,不过如果编码的时候没有考虑到使用UNICODE就并不是简单地打开几个宏就完事的了
      

  11.   

    http://www.linuxforum.net/books/UTF-8-Unicode.html