获取汉字的拼音 路过的看下(20分)

  • 主题发起人 主题发起人 fuxin198311
  • 开始时间 开始时间
F

fuxin198311

Unregistered / Unconfirmed
GUEST, unregistred user!
function GetPYIndexChar(const sScrStr: string):string;
var
iCount: integer;
sHz, sPYM: string;
begin
iCount:=1;
while iCount <= length(sScrStr) do
begin
sHz := COPY(sScrStr,iCount,2);
case WORD(sHz[1])shl 8 + WORD(sHz[2]) of
$B0A1..$B0C4: result:='A';
$B0C5..$B2C0: result:='B';
$B2C1..$B4ED: result:='C';
$B4EE..$B6E9: result:='D';
$B6EA..$B7A1: result:='E';
$B7A2..$B8C0: result:='F';
$B8C1..$B9FD: result:='G';
$B9FE..$BBF6: result:='H';
$BBF7..$BFA5: result:='J';
$BFA6..$C0AB: result:='K';
$C0AC..$C2E7: result:='L';
$C2E8..$C4C2: result:='M';
$C4C3..$C5B5: result:='N';
$C5B6..$C5BD: result:= 'O';
$C5BE..$C6D9: result:='P';
$C6DA..$C8BA: result:='Q';
$C8BB..$C8F5: result:='R';
$C8F6..$CBF9: result:='S';
$CBFA..$CDD9: result:='T';
$CDDA..$CEF3: result:='W';
$CEF4..$D1B8: result:='X';
$D1B9..$D4D0: result:='Y';
$D4D1..$D7F9: result:='Z';
else
result:='';
end;
if Result='' then
begin
sPYM := sPYM + COPY(sScrStr,iCount,1);
iCount:=iCount+ 1;
end
else
begin
sPYM:=sPYM +Result;
iCount:=iCount+2;
end;
Result:= sPYM;
end;
end;
这是函数
这是程序里调用
procedure Tyaopin_info.DBEdit3Change(Sender: TObject);
begin
dbedit4.Text:='';
dbedit4.Text:=GetPYIndexChar(dbedit3.Text);
end;
问题是当我输入强力枇杷露 出现的拼音码却是:QL鐻SD 本来应是:QLPPL
 
你这个是不完整版,只包含了GB2312编码格式的,没有包含GBK,甚至GB13000格式的编码,根本的解决,找一个gbk 输入法码表,取出拼音对照表,写入程序(可以用数组),然后xxx
 
QL鐻SD ?估计得跟踪程序看看哪儿写错了。
 
来自:bsense, 时间:2008-1-18 17:19:24, ID:3868435
你这个是不完整版,只包含了GB2312编码格式的,没有包含GBK,甚至GB13000格式的编码,根本的解决,找一个gbk 输入法码表,取出拼音对照表,写入程序(可以用数组),然后xxx

正解
 
这个问题,我们公司的产品中,也是获得了一个完整的源码单元,然后开发了一个动态链接库(可以按标准库或 COM 库方式来访问)。

只是,对于汉语中的多音字问题,没法处理。
 
自己找个输入法生成器,把码表导出,从里面查就行了
 
能具体说下吗?最好有源码 谢了
 
代码没细看,估计没问题,码表加点.....
根据bsense的思路可以解决,可是......
GBK13000格式的编码是根据笔画来编的,拼音没有规律,转换规则要自己写的话,不知道如何解决??
GBK 汉字内码扩展规范编码表(二)
http://219.136.187.225/SchoolWeb/hzdwzx/xxzy/xxzy-kj/xxzy-xx/xxzy-xx1/xxzy-xx1-1/HAIZI/GBK2.htm
 
用MSIME.China类中的IFELanguage接口,一般机器上都有,代码可以参考
http://club.excelhome.net/dispbbs.asp?boardid=2&id=229924
里面使用vba写的,也有思路介绍
 
后退
顶部