我想问一下关于UTF-8编码的问题,我有一个程序想修改以支持国际版韩文、日文操作系统等,是通过UNICODE 16好呢,还是UTF-8好呢?这两个在编程上有什么不同之处?
如果修改为UNICODE 16我知道应该把Char 修改为TCHAR等等(WIndows 核心编程一书上提到了),
但如果修改为UTF-8呢,应该如何去动手去改?
UNICODE 16需要设置编译环境:UNICODE,_UNICODE和入口点wWinMainCRTStartup
UTF-8呢?
如果修改为UNICODE 16我知道应该把Char 修改为TCHAR等等(WIndows 核心编程一书上提到了),
但如果修改为UTF-8呢,应该如何去动手去改?
UNICODE 16需要设置编译环境:UNICODE,_UNICODE和入口点wWinMainCRTStartup
UTF-8呢?
UTF-8太占存储空间了
楼主的意思可能是对于文本的处理,那么一般来说2个都需要支持。对于windows操作系统来说,一般都是在本地内存中使用unicode,在底层使用本地编码,因此编程的时候要具体问题具体分析。
utf-8适合用于网络传输
unicode用于windows应用程序国际化,
linux就不知道了
所谓国际化仅仅是为了能够让字符(文件名)在终端上正确的显示出来,你如果要支持所有的操作系统,那么你必须知道这个操作系统的本地编码是什么。所谓本地编码一般指的是当前操作系统文件名的存储所用的编码,有可能是ascii,也有可能是gb2312,也有可能是unicode或者其他的非unicode编码。那你的程序,也就是你在进行字符串处理的时候你准备用什么样的编码。一般我们不可能在这个操作系统上用这个操作系统的本地编码,在那个操作系统上用那个操作系统的本地编码,因此一般来说统一使用unicode编码(用2字节表示一个字符)。然后再为当前的操作系统准备一张双向的转换码表,比如说现在要将某个文件改名,那么可以将要改的目标名称(unicode)转换为本地编码传给系统,然后再刷新这个文件名,这就需要把系统传递给程序的本地编码先转换为unicode然后再放入内存的数据结构中等待下一步的操作。