大小写转换不一样?什么原因?          Ts :='圐圙';
        LowerCase(TS);
        UpperCase(TS);

解决方案 »

  1.   

    ansi还是unicode/utf8?估计是当做ascii字符处理了
      

  2.   

    UpperCae 处理 ansi
    WideUpperCase 处理unicode
      

  3.   

    调试一下LowerCase就知道了。
    function LowerCase(const S: string): string;
    var
      Ch: Char;
      L: Integer;
      Source, Dest: PChar;
    begin
      L := Length(S);
      SetLength(Result, L);
      Source := Pointer(S);
      Dest := Pointer(Result);
      while L <> 0 do
      begin
        Ch := Source^;
        if (Ch >= 'A') and (Ch <= 'Z') then Inc(Ch, 32);
        Dest^ := Ch;
        Inc(Source);
        Inc(Dest);
        Dec(L);
      end;
    end;ShowMessage('圐圙'[4]);
    第4个字符是G,调用LowerCase转换后变成g,所以第2个汉字“圙”就变成了“坓”。解决办法就是2楼所说的,用WideLowerCase和WideUpperCase替换LowerCase和UpperCase。