sqlite中文排序小诀窍
publicclassPinyinBiao{
privateString[]name={"zuo","zun","zui","zuan","zu","zou",
"zong","zi","zhuo","zhun","zhui","zhuang","zhuan",
"zhuai","zhua","zhu","zhou","zhong","zhi","zheng",
"zhen","zhe","zhao","zhang","zhan","zhai","zha","zeng",
"zen","zei","ze","zao","zang","zan","zai","za","yun",
"yue","yuan","yu","you","yong","yo","ying","yin","yi",
"ye","yao","yang","yan","ya","xun","xue","xuan","xu",
"xiu","xiong","xing","xin","xie","xiao","xiang","xian",
"xia","xi","wu","wo","weng","wen","wei","wang","wan",
"wai","wa","tuo","tun","tui","tuan","tu","tou","tong",
"ting","tie","tiao","tian","ti","teng","te","tao",
"tang","tan","tai","ta","suo","sun","sui","suan","su",
"sou","song","si","shuo","shun","shui","shuang","shuan",
"shuai","shua","shu","shou","shi","sheng","shen","she",
"shao","shang","shan","shai","sha","seng","sen","se",
"sao","sang","san","sai","sa","ruo","run","rui","ruan",
"ru","rou","rong","ri","reng","ren","re","rao","rang",
"ran","qun","que","quan","qu","qiu","qiong","qing",
"qin","qie","qiao","qiang","qian","qia","qi","pu","po",
"ping","pin","pie","piao","pian","pi","peng","pen",
"pei","pao","pang","pan","pai","pa","ou","o","nuo",
"nue","nuan","nv","nu","nong","niu","ning","nin","nie",
"niao","niang","nian","ni","neng","nen","nei","ne",
"nao","nang","nan","nai","na","mu","mou","mo","miu",
"ming","min","mie","miao","mian","mi","meng","men",
"mei","me","mao","mang","man","mai","ma","luo","lun",
"lue","luan","lv","lu","lou","long","liu","ling","lin",
"lie","liao","liang","lian","lia","li","leng","lei",
"le","lao","lang","lan","lai","la","kuo","kun","kui",
"kuang","kuan","kuai","kua","ku","kou","kong","keng",
"ken","ke","kao","kang","kan","kai","ka","jun","jue",
"juan","ju","jiu","jiong","jing","jin","jie","jiao",
"jiang","jian","jia","ji","huo","hun","hui","huang",
"huan","huai","hua","hu","hou","hong","heng","hen",
"hei","he","hao","hang","han","hai","ha","guo","gun",
"gui","guang","guan","guai","gua","gu","gou","gong",
"geng","gen","gei","ge","gao","gang","gan","gai","ga",
"fu","fou","fo","feng","fen","fei","fang","fan","fa",
"er","en","e","duo","dun","dui","duan","du","dou",
"****","diu","ding","die","diao","dian","di","deng",
"de","dao","dang","dan","dai","da","cuo","cun","cui",
"cuan","cu","cou","cong","ci","chuo","chun","chui",
"chuang","chuan","chuai","chu","chou","chong","chi",
"cheng","chen","che","chao","chang","chan","chai","cha",
"ceng","ce","cao","cang","can","cai","ca","bu","bo",
"bing","bin","bie","biao","bian","bi","beng","ben",
"bei","bao","bang","ban","bai","ba","ao","ang","an",
"ai","a"};
privateint[]code={-10254,-10256,-10260,-10262,-10270,-10274,
-10281,-10296,-10307,-10309,-10315,-10322,-10328,-10329,
-10331,-10519,-10533,-10544,-10587,-10764,-10780,-10790,
-10800,-10815,-10832,-10838,-11014,-11018,-11019,-11020,
-11024,-11038,-11041,-11045,-11052,-11055,-11067,-11077,
-11097,-11303,-11324,-11339,-11340,-11358,-11536,-11589,
-11604,-11781,-11798,-11831,-11847,-11861,-11867,-12039,
-12058,-12067,-12074,-12089,-12099,-12120,-12300,-12320,
-12346,-12359,-12556,-12585,-12594,-12597,-12607,-12802,
-12812,-12829,-12831,-12838,-12849,-12852,-12858,-12860,
-12871,-12875,-12888,-13060,-13063,-13068,-13076,-13091,
-13095,-13096,-13107,-13120,-13138,-13147,-13318,-13326,
-13329,-13340,-13343,-13356,-13359,-13367,-13383,-13387,
-13391,-13395,-13398,-13400,-13404,-13406,-13601,-13611,
-13658,-13831,-13847,-13859,-13870,-13878,-13894,-13896,
-13905,-13906,-13907,-13910,-13914,-13917,-14083,-14087,
-14090,-14092,-14094,-14097,-14099,-14109,-14112,-14122,
-14123,-14125,-14135,-14137,-14140,-14145,-14149,-14151,
-14159,-14170,-14345,-14353,-14355,-14368,-14379,-14384,
-14399,-14407,-14429,-14594,-14630,-14645,-14654,-14663,
-14668,-14670,-14674,-14678,-14857,-14871,-14873,-14882,
-14889,-14894,-14902,-14908,-14914,-14921,-14922,-14926,
-14928,-14929,-14930,-14933,-14937,-14941,-15109,-15110,
-15117,-15119,-15121,-15128,-15139,-15140,-15141,-15143,
-15144,-15149,-15150,-15153,-15158,-15165,-15180,-15183,
-15362,-15363,-15369,-15375,-15377,-15385,-15394,-15408,
-15416,-15419,-15435,-15436,-15448,-15454,-15625,-15631,
-15640,-15652,-15659,-15661,-15667,-15681,-15701,-15707,
-15878,-15889,-15903,-15915,-15920,-15933,-15944,-15958,
-15959,-16155,-16158,-16169,-16171,-16180,-16187,-16202,
-16205,-16212,-16216,-16220,-16393,-16401,-16403,-16407,
-16412,-16419,-16423,-16427,-16429,-16433,-16448,-16452,
-16459,-16465,-16470,-16474,-16647,-16657,-16664,-16689,
-16706,-16708,-16733,-16915,-16942,-16970,-16983,-17185,
-17202,-17417,-17427,-17433,-17454,-17468,-17482,-17487,
-17496,-17676,-17683,-17692,-17697,-17701,-17703,-17721,
-17730,-17733,-17752,-17759,-17922,-17928,-17931,-17947,
-17950,-17961,-17964,-17970,-17988,-17997,-18012,-18181,
-18183,-18184,-18201,-18211,-18220,-18231,-18237,-18239,
-18446,-18447,-18448,-18463,-18478,-18490,-18501,-18518,
-18526,-18696,-18697,-18710,-18722,-18731,-18735,-18741,
-18756,-18763,-18773,-18774,-18783,-18952,-18961,-18977,
-18996,-19003,-19006,-19018,-19023,-19038,-19212,-19218,
-19224,-19227,-19235,-19238,-19242,-19243,-19249,-19261,
-19263,-19270,-19275,-19281,-19288,-19289,-19467,-19479,
-19484,-19500,-19515,-19525,-19531,-19540,-19715,-19725,
-19728,-19739,-19741,-19746,-19751,-19756,-19763,-19774,
-19775,-19784,-19805,-19976,-19982,-19986,-19990,-20002,
-20026,-20032,-20036,-20051,-20230,-20242,-20257,-20265,
-20283,-20292,-20295,-20304,-20317,-20319};
publicStringgetPinyin(Stringgb2312){
if(null==gb2312||"".equals(gb2312.trim()))
{
returngb2312;
}
char[]chars=gb2312.toCharArray();
StringBufferretuBuf=newStringBuffer();
for(inti=0,Len=chars.length;i<Len;i++)
{
retuBuf.append(getPinyin(chars[i]));
}
returnretuBuf.toString();
}
publicStringgetPinyin(chargb2312){
intascii=getCnAscii(gb2312);
if(ascii==0){
returnString.valueOf(gb2312);
}
else
{
Stringspell=getSpellByAscii(ascii);
if(spell==null)
{
returnString.valueOf(gb2312);
}
else
{
returnspell;
}
}
}
privateintgetCnAscii(charcn){
byte[]bytes=null;
try{
bytes=(String.valueOf(cn)).getBytes("GB2312");
}catch(Exceptione){e.printStackTrace();}
if(bytes==null||bytes.length>2||bytes.length<=0)
{
return0;
}
if(bytes.length==1)
{
returnbytes[0];
}
else
{
inthightByte=256+bytes[0];
intlowByte=256+bytes[1];
intascii=(256*hightByte+lowByte)-256*256;
returnascii;
}
}
privateStringgetSpellByAscii(intascii){
if(ascii>0&&ascii<160)
{//单字符
returnString.valueOf((char)ascii);
}
if(ascii<-20319||ascii>-10247){//不知道的字符
return"?";}
intind;
for(ind=0;ind<code.length;ind++){
if(ascii>=code[ind])
{
break;
}
}
returnname[ind];
}
}