none
vista中文数字排序的问题 RRS feed

  • 问题

  • 三个文件夹,分别叫“第一”、“第二”、“第三”,排序之后的顺序是:

    第一

    第三

    第二

    2008年11月14日 0:22

答案

  • 是Unicode编码的问题,“三”的unicode编码比“二”小,所以排序的时候比二靠前

     

    The unicode for string 第一 is 31532 19968
    The unicode for string 第三 is 31532 19977
    The unicode for string 第二 is 31532 20108

     

    31532是“第”

    19977是“三”

    20108是“二”

     

    所以就是你看到的现象了。

    2008年11月14日 2:46

全部回复

  •  Haokai 写:

    三个文件夹,分别叫“第一”、“第二”、“第三”,排序之后的顺序是:

    第一

    第三

    第二

     

    这个看第一个字的吧

    2008年11月14日 1:06
  • 我这里能重现,

    初步感觉是个Bug

     

    2008年11月14日 2:16
  • 看似不像是Vista Only的问题,看下面的代码:

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

     

    namespace UnicodeChar

    {

        class Program

        {

            static void Main(string[] args)

            {

                string first = "第一";

                string second = "第二";

                string third = "第三";

     

                string[] stringArray = new string[] { first, second, third };

                Array.Sort(stringArray);

                for (int i = 0; i < stringArray.Length; i++)

                {

                    Console.WriteLine(stringArrayIdea);

                }

            }

        }

    }

     

    结果也是

    第一

    第三

    第二

     

    所以我怀疑是Unicode的大小问题,等下给你答案

    2008年11月14日 2:38
  • 是Unicode编码的问题,“三”的unicode编码比“二”小,所以排序的时候比二靠前

     

    The unicode for string 第一 is 31532 19968
    The unicode for string 第三 is 31532 19977
    The unicode for string 第二 is 31532 20108

     

    31532是“第”

    19977是“三”

    20108是“二”

     

    所以就是你看到的现象了。

    2008年11月14日 2:46