这个只能得出汉字的拼音首字母...怎么才能得到全部的拼音??另..下面的代码看不大懂..哪位高手给俺解释一下..重分相谢~~function GetHzPy(const AHzStr: string): string;
const
  ChinaCode: array[0..25, 0..1] of Integer = ((1601, 1636), (1637, 1832), (1833, 2077),
    (2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000),
    (2787, 3105), (3106, 3211), (3212, 3471), (3472, 3634), (3635, 3722), (3723, 3729),
    (3730, 3857), (3858, 4026), (4027, 4085), (4086, 4389), (4390, 4557), (9999, 0000),
    (9999, 0000), (4558, 4683), (4684, 4924), (4925, 5248), (5249, 5589));
var
  i, j, HzOrd: integer;
begin
  i := 1;
  while i <= Length(AHzStr) do
  begin
    if (AHzStr[i] >= #160) and (AHzStr[i + 1] >= #160) then
    begin
      HzOrd := (Ord(AHzStr[i]) - 160) * 100 + Ord(AHzStr[i + 1]) - 160;
      for j := 0 to 25 do
      begin
        if (HzOrd >= ChinaCode[j][0]) and (HzOrd <= ChinaCode[j][1]) then
        begin
          Result := Result + char(byte('A') + j);
          break;
        end;
      end;
      Inc(i);
    end else Result := Result + AHzStr[i];
    Inc(i);
  end;
end;

解决方案 »

  1.   

    you lookhttp://expert.csdn.net/Expert/topic/1030/1030590.xml?temp=.8472101
      

  2.   

    这里也有:
    http://expert.csdn.net/Expert/topic/1387/1387622.xml?temp=.8651544
      

  3.   

    打开“字符映射表”,看看就明白:
    B0A1-B0FE、
    B1A1-B1FE、
    B2A1-B2FE、
    ...
    D6A1-D6FE
    D7A1-D7F9
    上面是GB_2312一级汉字内码,按拼音顺序排列;
    D8A1-D8FE、
    ...
    F1A1-F7FE
    二级汉字内码,按部首顺序排列。
    加起来一共就是大家很熟悉的6763个汉字。
    一个可行的方法是把拼音输入法数据库转换得到汉字到拼音的索引,不过多音字还是需要另行考虑。
      

  4.   

    才6763个汉字?这怎么能应付你们的大型ERP?
    随便找个输入法软件,用windows自带的工具把它的码表导成文本文件,然后直接检索那个文件得到拼音
      

  5.   

    呵呵,楼上的理论真有趣,仿佛是说ERP用的汉字与ERP的规模有关。
    需要检索拼音的汉字无非是客户名称、商品名称之类的,一、二级字库足够应付了。甚至不需要考虑多音字的问题。实践出真知,试试就知道。