怎样取到汉字的区位码?拼音也可吧。
解决方案 »
- 提问,怎样在网站上搜索包含指定文本的字符串?
- 如何用ado读取mysql中的longtext字段,并保存到文件中?
- ADOQuery查询问题?
- D6的原程序在D7中出现问题:Error reading report1.Frzme.Color:Property Frame Dose not exist.
- 请问哪里有RXCOM FOR DELPHI 控件下载?
- 如何添加键盘接口?
- 寻Vcl控件
- 1000分求救!!為會麼我的K7S5A2主板不能裝WIN2000 SERVER??非常急!!!!!!!!!!
- 求教:为什么别人编的程序在我地方老说 Left side cannot be assigned to
- 两层还是三层?
- 有没有一个DELPHI的函数可以截掉字串末尾的数字?
- 怎么样用DBIMAGE来显示用ACCESS做后台数据库里的图片呢!急!。。。
'汉'的内码=Ord(Str[0]), Ord(Str[1]),内码与区位位码有对应的关系
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();
}