📄 gbk.cpp
字号:
#include "CNPY.h"
#include "GBK.h"
#define CODE_COUNT 23/*23个声母区a~z(不包括i,u,v)*/
static char g_szCharCodeLower[CODE_COUNT + 1] = {"abcdefghjklmnopqrstwxyz"};
static char g_szCharCodeUpper[CODE_COUNT + 1] = {"ABCDEFGHJKLMNOPQRSTWXYZ"};
/**************************************** 汉字拼音计算原理 ****************************************
(1)g_nHZStatByPinYin: 记录GBK21003个汉字按拼音排序,在23个声母区a~z(不包括i,u,v)字数的分布情况
该分布表是在SCSort工程运行后手动统计拼音排序文件“所有汉字21003.csv”得到的。
(2)g_dwHZPYIDBySortAsc:记录GBK21003个汉字按拼音排序后的排序ID。例如计算'丟'(0x8147)的拼音:
(1)GBK码0x8147-0x8140 = 0x7,查拼音映射ID g_dwHZPYIDBySortAsc[0x7]=0x0BF8
(2)由于g_nHZStatByPinYin[2](0x0437) <= 0xBF8 <= g_nHZStatByPinYin[3](0x0D44)
确定汉字'丢'所在的声母区为3
(3)查询声母g_szCharCodeLower[3]或g_szCharCodeUpper[3]得到拼音为'd'或'D'
同样对于'亞'(0x8186):(1)g_dwHZPYIDBySortAsc[0x8186-0x8140]=0x43BF。(2)
g_nHZStatByPinYin[20](0x437E) <= 0x43BF <= g_nHZStatByPinYin[21](0x4B1B)。
(3)声母为g_szCharCodeLower[0x21] = 'y'
注意:(1)其中0x8140为第一个GBK汉字的GBK码。
(2)该映射表数组由SCSort工程中SSCortView::OnBuildScPysort()方法生成的
“拼音映射表.txt”得到。
(3)g_pszDYZIndex:与g_dwHZPYIDBySortAsc功能一样,只不过返回的是多音字的拼音而已。该多音字映射数组
由SSCSortView::onDyzSort()方法生成的“多音字映射表.txt”得到。
**************************************** 汉字拼音计算原理 ****************************************/
static int g_nHZStatByPinYin[CODE_COUNT] =
{
0x00C5/*('a')*/,0x0437,0x096C,0x0D44/*('d')*/,0x0DF4,0x1059,0x139F,0x17BB/*('h')*/,
0x1E0A/*('j')*/,0x203A,0x2657,0x2986/*('m')*/,0x2B62,0x2B87,0x2DF1,0x3183/*('q')*/,
0x3341/*('r')*/,0x3862,0x3BE2,0x3E56/*('w')*/,0x437E,0x4B1B,0x520B
};
static WORD g_dwHZPYIDBySortAsc[] =
{
0x1E7C,0x3474,0x3F8B,0x2989,0x2847,0x076E,0x35C4,0x0BF8,0x30C8,0x2312,0x48D7,0x038E,0x1C58,0x186E,0x1B4B,0x12B5,
0x055E,0x5068,0x13A5,0x1BF5,0x0FA2,0x45FD,0x466E,0x3E07,0x1C70,0x14E7,0x476C,0x15A4,0x0673,0x473B,0x3C13,0x1081,
0x1C71,0x13BB,0x14E8,0x0C40,0x35B4,0x29DD,0x1E3B,0x1EF0,0x3ABC,0x2942,0x2B6C,0x0458,0x430B,0x442E,0x2C81,0x33D5,
0x2991,0x2F1E,0x3756,0x0DBE,0x091F,0x04DC,0x4E78,0x12FD,0x10A3,0x25EF,0x23B8,0x46D5,0x1D78,0x2678,0x35CB,0xFFFF,
0x4915,0x3729,0x3808,0x119E,0x43BC,0x2E29,0x43BF,0x099D,0x4592,0x407D,0x1BD4,0x45A0,0x4900,0x09FB,0x22AA,0x0D2C,
0x3D15,0x181E,0x31FF,0x3C65,0x00C8,0x036D,0x0F6E,0x395D,0x0DBD,0x3F9C,0x0D0F,0x14FA,0x10AD,0x03BB,0x05E7,0x0596,
0x3476,0x325B,0x0E4E,0x05E8,0x2F19,0x3DB9,0x454D,0x0F22,0x0480,0x3C68,0x0AB9,0x4ED1,0x2C21,0x4918,0x0B87,0x0CF0,
0x3E35,0x467B,0x41A8,0x1820,0x002B,0x1B9C,0x2C84,0x09F1,0x0F7C,0x2B2D,0x0924,0x4AD1,0x05EC,0x2F53,0x4372,0x41AB,
0x4BB2,0x3FCD,0x2B32,0x2A46,0x4149,0x4277,0x4F3A,0x311E,0x0200,0x2C85,0x4680,0x3731,0x464F,0x4DA6,0x13BD,0x2695,
0x4FA8,0x0421,0x311F,0x022F,0x4CD6,0x088D,0x44EE,0x4C8D,0x0246,0x3FA1,0x3147,0x358D,0x0174,0x16EF,0x14A8,0x4073,
0x1143,0x0E0F,0x28E0,0x038F,0x14CB,0x1785,0x131F,0x3194,0x0893,0x41D4,0x34CF,0x3BA1,0x106A,0x2065,0x4607,0x12D4,
0x4740,0x27FF,0x427A,0x004C,0x254A,0x0DC3,0x2601,0x0509,0x06A9,0x4375,0x4F0E,0x32D5,0x19D4,0x3736,0x09A9,0x3878,
0x2AF3,0x1BA3,0x1C46,0x069D,0x4D8C,0x51BB,0x0771,0x25A9,0x1CC9,0x367F,0x3AAC,0x3513,0x3BA6,0x03C5,0x29C6,0x40A5,
0x3B74,0x497A,0x3F2B,0x4263,0x12ED,0x1F30,0x3E17,0x469C,0x100C,0x2303,0x1773,0x1C13,0x2F55,0x3385,0x2C20,0x3E70,
0x284C,0x3F63,0x420B,0x0B08,0x05EE,0x4E63,0x2066,0x36FE,0x1794,0x40FD,0x19DC,0x032C,0x07BA,0x0EC2,0x43C5,0x01CA,
0x49AE,0x4194,0x06D2,0x0585,0x4DF6,0x0393,0x1C85,0x4522,0x0927,0x229E,0x3C35,0x2067,0x0485,0x512C,0xFFFF,0x116E,
0x3A2E,0x363C,0x279E,0x38D9,0x0813,0x41EB,0x2C52,0x2DFD,0x10C4,0x1C16,0x37F0,0x1B13,0x0E87,0x4E12,0x50F6,0x2603,
0x375D,0x21AD,0x1774,0x0C05,0x50EA,0x01ED,0x3E18,0x1CA4,0x29B5,0x044A,0x1999,0x4580,0x33F0,0x300C,0x47C5,0x0653,
0x2F27,0x330B,0x4F04,0x0847,0x3CE5,0x4982,0x0397,0x39BF,0x4475,0x0F31,0x394C,0x3DBE,0x0D84,0x05F5,0x354B,0x1E49,
0x0B0E,0x04E6,0x01CF,0x45A8,0x1684,0x455B,0x4C92,0x0772,0x43D9,0x48C0,0x426D,0x4C0B,0x086A,0x1035,0x021E,0x4E79,
0x2850,0x1838,0x465C,0x4158,0x435A,0x0440,0x0CA4,0x04BA,0x4D48,0x3AFB,0x01D0,0x4B59,0x1B18,0x3CE6,0x3798,0x4E8A,
0x37BC,0x3F58,0x4A83,0x32B6,0x2B38,0x4B0D,0x1A3F,0x267E,0x0B34,0x3927,0x144E,0x1B1D,0x3E92,0x343E,0x2F5A,0x1D9C,
0x0487,0x07C0,0x3379,0x01D4,0x4104,0x4882,0x4526,0x390B,0x3848,0x44F7,0x0E08,0x0398,0x1900,0x4B4F,0x1234,0x0461,
0x217B,0x4854,0x4B8D,0x5120,0x2C59,0x3770,0x07E6,0x498B,0x4C53,0x5159,0x3461,0x0804,0x1C29,0x1401,0x4CA7,0x3078,
0x43E1,0x0B1D,0x4166,0x24D6,0x01D5,0x2D28,0x1B8C,0x22F1,0x255F,0x26C0,0x2EFB,0x3FB1,0x390E,0x4811,0x0C31,0x4FFE,
0x3443,0x2FD6,0x1C4F,0x3B77,0x51A3,0x2DD4,0x211D,0x05B6,0x12E2,0x2E10,0x0AAE,0x0537,0x3CFF,0x17E8,0x03B2,0x1729,
0x07EF,0x3A7A,0x0A18,0x1AA9,0x0F18,0x4040,0x1CD6,0x0D9C,0x23BA,0x03E0,0x1265,0x3FB2,0x4041,0x28C2,0x45B5,0x1BB9,
0x193E,0x2FF8,0x0F40,0x4F4C,0x0038,0x3369,0x4634,0x1E03,0x2B10,0x053D,0x46ED,0x0A2F,0x1F59,0xFFFF,0x19B8,0x07C8,
0x1AAF,0x33EE,0x4B51,0x0478,0x0352,0x007F,0x38B0,0x075F,0x0519,0x20A1,0x2A54,0x1BBE,0x2F65,0x27AF,0x3E2A,0x2AE4,
0x30BE,0x2A55,0x05AA,0x2383,0x25BA,0x1F84,0x01AC,0x49FD,0x0313,0x4B5E,0x4EB9,0x3752,0x48A2,0x1439,0x30A2,0x0646,
0x2272,0x39AB,0x3D0C,0x24C4,0x07AA,0x0549,0x3219,0x3657,0x1751,0x228A,0x262F,0x4B60,0x2B53,0x3953,0x445C,0x218C,
0x29E9,0x4B53,0x41F7,0x0CC8,0x0CC9,0x3B46,0x0597,0x0DC2,0x0DC4,0x1B70,0x4432,0x35B9,0x3616,0x2FAD,0x11D1,0x1460,
0x34E4,0x0C3A,0x0120,0x11D2,0x16BF,0x3C66,0x2A1F,0x2314,0x4926,0x13BC,0x3A0B,0x2DB8,0x18AC,0x46D6,0x271B,0x320F,
0x43F1,0x270F,0x04B0,0x1C3A,0x127A,0x1C42,0x271E,0x4F3F,0x11F4,0x426A,0x476B,0x1E44,0x4602,0x27DD,0x35D6,0x27A4,
0x1D13,0x1F12,0x289D,0x1036,0x4146,0x282D,0x38B8,0x10D2,0x15B6,0x2BC5,0x0FA8,0x28B0,0x2ED1,0x1949,0x3780,0x2768,
0x3B1F,0x1257,0x1C17,0x309A,0x0C28,0x10C5,0x474C,0x0014,0x224E,0x0488,0x28E2,0x504B,0x0913,0x370C,0x0D1B,0x1BBA,
0x23BC,0x3EB9,0x0C72,0x0E2B,0x0E2C,0x1C9A,0x07B1,0x4DA4,0x0F23,0x296C,0x4E33,0x0F24,0x0F28,0x1E24,0x10A4,0x2D79,
0x1F4D,0x13CF,0x3258,0x07F7,0x17C1,0x2F52,0x0946,0x17C5,0x09F2,0x3C22,0x1D7C,0x21B2,0x0FA9,0x317A,0x0B70,0x28B1,
0x23DC,0x4ED3,0x0336,0x1B04,0x1B05,0x3408,0x055C,0x117F,0x080A,0x1FA6,0x0D30,0x0DEF,0x1B09,0x0895,0x1BFD,0x0C36,
0x263B,0x4BBB,0x4A20,0x095F,0x1EBC,0x050B,0x080B,0x0960,0x21B4,0x0EC3,0x0560,0x2E33,0xFFFF,0x080C,0x50EB,0x10DE,
0x0178,0x0D09,0x3081,0x0C60,0x19DE,0x1899,0x43D5,0x1799,0x0D12,0x3B54,0x3DDF,0x127E,0x3550,0x19E3,0x0985,0x1E25,
0x080D,0x07DD,0x0567,0x3B55,0x2560,0x21C3,0x2C79,0x341D,0x1F08,0x1274,0x1605,0x4C11,0x507E,0x22B5,0x1D2C,0x244E,
0x1344,0x1AB0,0x1345,0x19FB,0x19FC,0x3919,0x18C3,0x1A06,0x1A07,0x4EBA,0x054A,0x516C,0x2905,0x21F3,0x4F8B,0x43B6,
0x1B9D,0x1EE1,0x4116,0x4E34,0x4682,0x4F57,0x290B,0x2112,0x1D5B,0x1F0D,0x44CB,0x3BEC,0x40FA,0x2946,0x1F70,0x1B0A,
0x236C,0x1EBD,0x1BA5,0x111B,0x28B5,0x0703,0x20E4,0x487B,0x1EBE,0x1D5E,0x3082,0x254F,0x0429,0x051C,0x1E37,0x2852,
0x0C2B,0x4288,0x3E40,0x46B6,0x4333,0x3D97,0x3553,0x211A,0x2561,0x2D29,0x35F4,0x17E2,0x1A41,0x1AA3,0x31D0,0x4099,
0x46E2,0x1DA4,0x0E1B,0x1D49,0x3ADF,0x1D2D,0x09EA,0x269D,0x4338,0x4339,0x25CC,0x2265,0x0605,0x321A,0x31D2,0x4ACF,
0x1C59,0x019B,0x26F7,0x0241,0x1082,0x1083,0x4676,0x2C3E,0x1C9D,0x3975,0x1144,0x0D7F,0x11B3,0x0986,0x1C8B,0x11B9,
0x2A04,0x1C7D,0x45FF,0x1A4B,0x1E70,0x155E,0x3120,0x0E2D,0x300A,0x0492,0x1F73,0x156A,0x4983,0x132B,0x1720,0x09E4,
0x1FE0,0x22B1,0x22B6,0x37E7,0x0C73,0x1C96,0x3160,0x3F20,0x1E8A,0x4433,0x312E,0x436F,0x2A86,0x5152,0x35C8,0x3F21,
0x3C51,0x3C52,0x411A,0x09D7,0x1839,0x36A8,0x12B3,0x3E69,0x4154,0x1AFF,0x44EC,0x30A9,0x3497,0x06EA,0x427B,0x31D8,
0x1FCE,0x182D,0x0D85,0x3EA0,0x3373,0x3CD5,0x4D04,0x13E4,0x43AD,0x0AE9,0x4C29,0xFFFF,0x2BDF,0x0007,0x3007,0x439D,
0x4E5B,0x26DF,0x39BD,0x34B3,0x3A8C,0x517A,0x0EC4,0x04BB,0x4A4D,0x224F,0x0B35,0x1B8D,0x0091,0x1331,0x4486,0x225E,
0x05B7,0x209E,0x225F,0x4418,0x4455,0x4A76,0x11A6,0x238D,0x32B9,0x3178,0x1EF2,0x2175,0x0C88,0x4FE5,0x045A,0x045B,
0x045E,0x0035,0x09C4,0x3618,0x1291,0x00DE,0x3336,0x35CC,0x5063,0x1927,0x3796,0x182E,0x3D1E,0x332C,0x08D6,0x127B,
0x30E4,0x06E6,0x0CBC,0x14E9,0x287C,0x26D7,0x42AD,0x50D1,0x0949,0x4591,0x2B80,0x177D,0x45DD,0x076F,0x305F,0x1B4D,
0x0422,0x0D4B,0x14FE,0x3DEE,0x2996,0x4324,0x0C35,0x154C,0x1119,0x1DF1,0x25A6,0x1142,0x273B,0x2E8A,0x3DF1,0x1AC5,
0x4AD2,0x06E7,0x3528,0x3B82,0x3D7A,0x0D77,0x3560,0x1D52,0x2C3A,0x3D7D,0x265D,0x3202,0x0AED,0x35D1,0x4F3B,0x3A81,
0x3F26,0x468E,0x2EA7,0x2D5C,0x50D8,0x4267,0x468F,0x40A3,0x097C,0x317B,0x13CD,0x3BA2,0x2DB3,0x0338,0x0FAF,0x44B5,
0x146D,0x13A7,0x096E,0x3C02,0x51C7,0x0424,0x386F,0x3FCE,0x1793,0x2EAB,0x0DF0,0x0D7A,0x3F2C,0x4F40,0x3680,0x40FB,
0x1F43,0x161F,0x3977,0x0D7B,0x42B0,0x136A,0x212D,0x3ACB,0x41FD,0x48F4,0x0BCC,0x2A72,0x41D6,0x2DB9,0x1447,0x4A48,
0x24CA,0x2DB4,0x26E3,0x5155,0x147A,0x402C,0x2116,0x2DA2,0x231F,0x00D3,0x287E,0x25C1,0x37F1,0x0FCB,0x13BF,0x36E1,
0x48FD,0x120C,0x120D,0x0117,0x13D1,0x46A8,0x1915,0x3B12,0x3FD4,0x3C36,0x21B1,0x30F5,0x05F0,0x4BA1,0x43B0,0x0C37,
0x2E8E,0x0AD1,0x3063,0x2734,0x11C4,0x39B4,0x1EF1,0x2315,0x210D,0x33D8,0xFFFF,0x50F4,0x3DA9,0x477B,0x2EB2,0x0DCC,
0x2FAA,0x006B,0x4BBC,0x0B5A,0x490E,0x3A2F,0x2080,0x3E83,0x0011,0x2B24,0x506E,0x0B0F,0x14E4,0x40B3,0x405B,0x3B85,
0x3E1A,0x3D89,0x0BA9,0x1235,0x2E91,0x2E92,0x0A0B,0x3BF5,0x50DF,0x023C,0x092D,0x1480,0x43B1,0x2E93,0x4D0F,0x2316,
0x3FDF,0x47C9,0x127F,0x4BB1,0x136D,0x2620,0x2A28,0x0ABE,0x319D,0x38CA,0x11A0,0x3928,0x0067,0x0A11,0x49C2,0x4D14,
0x4F1E,0x0518,0x3C0E,0x49B6,0x4B5A,0x4514,0x2853,0x1583,0x4AFB,0x1667,0x1668,0x17D9,0x4EF1,0x3CBC,0x33F5,0x428F,
0x1689,0x0D16,0x2AAE,0x2322,0x49C3,0x3392,0x06B3,0x2FD4,0x447A,0x09E0,0x2C3D,0x045F,0x484E,0x3C8D,0x480D,0x2C82,
0x01BD,0x11A1,0x4BA5,0x17A1,0x39CC,0x452C,0x14B1,0x2F7C,0x33B3,0x4855,0x152F,0x412D,0x2688,0x04E7,0x13B5,0x32FB,
0x3BF7,0x17E3,0x2BEC,0x3DE3,0x2F5E,0x50A7,0x213D,0x3C07,0x1941,0x385F,0x089F,0x3367,0x11A2,0x29A5,0x2F78,0x0271,
0x0094,0x22AB,0x517C,0x4D33,0x2926,0x3900,0x1AD2,0x072B,0x1A75,0x1E38,0x390F,0x341F,0x0017,0x4108,0x24D8,0x40C3,
0x1571,0x172A,0x1376,0x2B84,0x3FB3,0x4BC4,0x05A4,0x2D8F,0x0A97,0x2680,0x158E,0x105F,0x3918,0x4596,0x3362,0x1AD3,
0x4109,0x15ED,0x2690,0x320B,0x211E,0x410C,0x17EC,0x1FE1,0x40C8,0x1437,0x265C,0x2FD9,0x07C9,0x38D0,0x0A1B,0x4384,
0x0D6A,0x51A4,0x0E1C,0x06BA,0x16E2,0x0471,0x0803,0x08F1,0x0A19,0x49EA,0x2031,0x3EB3,0x2EBF,0x1435,0x22B7,0x4255,
0x16E3,0x478E,0x4362,0x2AB4,0x3715,0x4450,0x47E0,0x0975,0x4C63,0xFFFF,0x4F4F,0x2B12,0x1736,0x416B,0x1ADA,0x4A8C,
0x0023,0x485F,0x1F5C,0x4996,0x2C33,0x0A87,0x419E,0x0CE5,0x0A30,0x419F,0x2CE1,0x4766,0x5182,0x2AE6,0x0AE2,0x20DA,
0x3890,0x17A4,0x3F96,0x45C5,0x0D0E,0x2CEF,0x4F27,0x18CA,0x1BC3,0x05AB,0x433C,0x2736,0x3A04,0x24FE,0x1747,0x03F2,
0x48A4,0x2AC1,0x4791,0x15D3,0x2788,0x14F7,0x4D21,0x21E1,0x245C,0x13B9,0x29DE,0x28ED,0x4499,0x2279,0x2513,0x24A4,
0x2900,0x0A26,0x0647,0x2D46,0x2CE3,0x4087,0x2738,0x3F50,0x0D2F,0x1F3C,0x441C,0x054E,0x47EE,0x0BCF,0x204C,0x3892,
0x40DF,0x0862,0x162A,0x17B6,0x5008,0x2ACA,0x40E0,0x043F,0x21EC,0x0577,0x0520,0x2290,0x472F,0x261E,0x4B72,0x37AB,
0x14E6,0x4BEE,0x198F,0x4B3A,0x4FA5,0x20B8,0x2AD0,0x3201,0x248A,0x16EC,0x473C,0x2AD7,0x3B52,0x1E72,0x4A1E,0x1C43,
0x2CF6,0x4AD3,0x08A2,0x16EE,0x0D4C,0x137D,0x3ABD,0x3B1D,0x137E,0x31F5,0x3283,0x137F,0x389C,0x1381,0x4773,0x1775,
0x13D2,0x2605,0x1382,0x07E3,0x3CBD,0x4A4F,0x318D,0x1F27,0x2DE5,0x4A56,0x4A57,0x43CF,0x3B62,0x3B33,0x3B34,0x3B56,
0x25F6,0x172E,0x46FB,0x25DA,0x25E5,0x43B7,0x3B41,0x3AAB,0x2DCC,0x2547,0x1F4E,0x1C9B,0x49A0,0x2EDC,0x2EDD,0x505F,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -