没有怎么系统学过字符集以及相关编码的东西,所以不是很明白。比方说:在内存中,如果编码方式不一样,那么相同的字符会有不同的字节表示。  而计算机是怎么知道编码方式的呢?

解决方案 »

  1.   

    主要看你是怎么调用啦,其实对于系统而言没啥区别的。
    因此微软的API就有了字符集转换的函数了。
      

  2.   

    操作系统会以某种特定的编码形式来使用,比如Unicode
    除非用户明确指明想得到某种形式编码的数据以下引用《Windows核心编程》中的一段话,希望有助于理解"Windows 2000 是使用Unicode从头进行开发的,用于创建窗口、显示文本、进行字符串操作等的所有核心函数都需要Unicode字符串。如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成Unicode ,然后将Unicode 字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结果返回给你的应用程序。所有这些转换操作都是在你看不见的情况下发生的。当然,进行这些字符串的转换需要占用系统的时间和内存。"
      

  3.   

    其实,计算机自己并不知道,只有程序员才知道
    如果计算机自己知道,就不会有乱码了
    各种语言的编码问题和现实世界的语言方言问题是一样的,很麻烦,茴香豆茴都有五种写法 :)
    现在有了unicode,问题应该可以妥善解决,但是事实并不是这样,就如有了世界语,还是没有解决语言交流的问题一样
    老程序员们习惯于ANSI,很多优秀的代码都只认ANSI,不是不得已,许多人还会那样用下去...
      

  4.   

    这东西不好说,只有你找个切实的东西做一做才会从本质上明白,确实是程序员才知道如何编码的,前几天做gb18030的点阵字库,就研究了好几天才将gb18030-2000的点阵字库做好。所谓汉字,就是硬性规定哪两个ascii值连在一起表示哪个汉字罢了,当你写这个汉字的时候,就一次性写入了那两个对应的ascii值,显示的时候,遇到那两个ascii值连在一起,就表示对应的汉字,当然,现在gb18030有4字节编码了。