lowercase在转换带中文的字符串时,有BUG?(50)

  • 主题发起人 主题发起人 ypluo
  • 开始时间 开始时间
Y

ypluo

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI2007中,使用lowercase('where xm=''王珺'''),出来的结果是:'where xm=''王铮''',这个应该是BUG,那位朋友也试试
 
果然是的UpperCase('where xm=''王铮'''),出来的结果是:'where xm=''王珺'''看来转的时候要注意汉字了
 
谁有lowercase的源码,跟踪一下,看看问题出在那儿,我安装的delphi2007好像没有源码
 
呵呵,没问题,‘珺’其实是两个字节,分别是 172 和 66,其中66(‘B’)的lowercase 为‘b’,然后取lowercase函数后,那两个字节变为 172 和98(b),这两个字节组合成汉字‘铮’,呵呵
 
建议使用AnsiLowerCase和AnsiUpperCase转换带有汉字的字符串
 
汉字都是两个字节的啊,高位是1啊。
 
你试试就知道了,比如 Str := '珺'; B1 := Byte(Str[1]); B2 := Byte(Str[2]);这样就可以知道它的高低位
 
delphi7也是这样的.
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
909
DelphiTeacher的专栏
D
D
回复
0
查看
704
DelphiTeacher的专栏
D
D
回复
0
查看
666
DelphiTeacher的专栏
D
后退
顶部