Pos函数对中文的bug?
- Delphi(Pascal) code
var iTmp: Integer;begin iTmp := Pos('谢', '巩义市黄'); ShowMessage(IntToStr(iTmp)); //6 iTmp := Pos(WideString('谢'), WideString('巩义市黄')); //0 ShowMessage(IntToStr(iTmp));end;大家试试
[解决办法]
只要转化为WideString就没有问题了
[解决办法]
应该是'谢'这个汉字编码的问题
我换了个'我'第一个输出就是0
[解决办法]
[解决办法]
第一个是按asic找的,谢的第一个码是208,市的第二个吗是208,所以找到这个
[解决办法]
这是因为第一个字的后半部分加上第二个字的前半部分就是'谢',所以才出现的这种情况咧,这不是bug,是由于汉字由两个字节组成的
[解决办法]
动不动就BUG,BS
[解决办法]
不是漏洞,是由于汉字由两个字节组成的,使用WideString就Ok了
试试看:
edit1.Text := intToStr(pos('市',WideString('资中市')));
//结果=3,正确.
edit1.Text := intToStr(pos('市',WideString('资兴市')));
//结果=3
[解决办法]
要是你不会的不明白的东西就给下个定义说是Bug.楼主你得当凯撒才行。
[解决办法]
换成widestring处理
[解决办法]
既然楼主知道使用解决的方法:
iTmp := Pos(WideString('谢'), WideString('巩义市黄')); //0
ShowMessage(IntToStr(iTmp));
足可见,他是知道怎么回事的,大家没必要扣帽子,贴出来,一则娱乐大家,二则警醒遇到汉字定位时需注意此种情况而已。
[解决办法]
呵呵,汉字编码问题耶。换widestring
[解决办法]
使用WideString吧。
[解决办法]
貌似用错函数吧,应该使用
AnsiPos('谢', '巩义市黄');
[解决办法]
现在csdn的高手是不是已经不来了?
[解决办法]
单字节和双字节的问题
[解决办法]
你用AnsiPos试试
[解决办法]
AnsiPos 一般 情况下最好用这个
[解决办法]
ansi和unicode什么区别