怎样取到汉字的区位码?拼音也可吧。

解决方案 »

  1.   

    Str='汉字'
    '汉'的内码=Ord(Str[0]), Ord(Str[1]),内码与区位位码有对应的关系
      

  2.   

    提供一段C++的取拼音的函数。
    String GetPinYin(const String &strValue)
    {
        String strResult = "";
        for (int i=0; i< strValue.Length(); ++i)
        {
            char cTemp;
            cTemp = strValue.c_str()[i];
            if ( !IsDBCSLeadByte( byte( cTemp ) ) )     //非汉字处理
            {
                strResult += cTemp;                     //原样输出
            }
            else                                        //汉字处理
            {
                String strChinese;
                char cTempResult;            strChinese = strValue.SubString(++i, 2);   //取出汉字
                WORD Hi = WORD(strChinese[1]) << 8;
                WORD Lo = BYTE(strChinese[2]);
                int nWord = Hi + Lo;            if (nWord <= 0xB0C4 && nWord >= 0xB0A1)
                    cTempResult = 'A';
                else if (nWord <= 0XB2C0 && nWord >= 0XB0C5)
                    cTempResult = 'B';
                else if (nWord <= 0xB4ED && nWord >= 0xB2C1)
                    cTempResult = 'C';
                else if (nWord <= 0xB6E9 && nWord >= 0xB4EE)
                    cTempResult = 'D';
                else if (nWord <= 0xB7A1 && nWord >= 0xB6EA)
                    cTempResult = 'E';
                else if (nWord <= 0xB8c0 && nWord >= 0xB7A2)
                    cTempResult = 'F';
                else if (nWord <= 0xB9FD && nWord >= 0xB8C1)
                    cTempResult = 'G';
                else if (nWord <= 0xBBF6 && nWord >= 0xB9FE)
                    cTempResult = 'H';
                else if (nWord <= 0xBFA5 && nWord >= 0xBBF7)
                    cTempResult = 'J';
                else if (nWord <= 0xC0AB && nWord >= 0xBFA6)
                    cTempResult = 'K';
                else if (nWord <= 0xC2E7 && nWord >= 0xC0AC)
                    cTempResult = 'L';
                else if (nWord <= 0xC4C2 && nWord >= 0xC2E8)
                    cTempResult = 'M';
                else if (nWord <= 0xC5B5 && nWord >= 0xC4C3)
                    cTempResult = 'N';
                else if (nWord <= 0xC5BD && nWord >= 0xC5B6)
                    cTempResult = 'O';
                else if (nWord <= 0xC6D9 && nWord >= 0xC5BE)
                    cTempResult = 'P';
                else if (nWord <= 0xC8BA && nWord >= 0xC6DA)
                    cTempResult = 'Q';
                else if (nWord <= 0xC8F5 && nWord >= 0xC8BB)
                    cTempResult = 'R';
                else if (nWord <= 0xCBF0 && nWord >= 0xC8F6)
                    cTempResult = 'S';
                else if (nWord <= 0xCDD9 && nWord >= 0xCBFA)
                    cTempResult = 'T';
                else if (nWord <= 0xCEF3 && nWord >= 0xCDDA)
                    cTempResult = 'W';
                else if (nWord <= 0xD1A9 && nWord >= 0xCEF4)
                    cTempResult = 'X';
                else if (nWord <= 0xD4D0 && nWord >= 0xD1B9)
                    cTempResult = 'Y';
                else if (nWord <= 0xD7F9 && nWord >= 0xD4D1)
                    cTempResult = 'Z';            strResult += cTempResult;
            }
        }
        return strResult.LowerCase();
    }