delphi 如何不出乱码的截取字符串
发布时间:2025-05-14 02:04:08 发布人:远客网络
一、delphi 如何不出乱码的截取字符串
对于字符来说,如果使用 AnsiString,则汉字占用2个字节,英文字符占用1个字节,这样当截取字符是汉字一部分时,就会出现乱码。
1、将 AnsitString改为 WideString。delphi早期版本中,string默认是 AnsiString,新版本支持 Unicode,默认 string代表 WideString。由于 WideString将中文、英文字符都统一用 2个字节表示,可以避免汉字截断的情况。
2、出现乱码,通常是截取时,汉字占用字节数没有复制完全。这种情况,可以用 ByteType函数检测复制的字符串(最后一个字节)是否是汉字。
ByteType函数对取出来的字符进行判断,是一个单字符还是汉字的一部分。如果返回结果是mbLeadByte就是汉字的第一个字节,mbTrailByte是汉字的第二个字节,mbSingleByte是英文字符。
functionGetText(strtxt:string;iLen:integer):string;
//先判断要截取的字符串最后一个字节的类型
//如果为汉字的第一个字节则减(加)一位
ifByteType(strtxt,iLen)=mbLeadBytethen
二、delphi 如何把一串字符串的某个值的前几个字符保留下来
可通过函数POS及COPY配合使用实现该功能。
POS:获取特定字符所处字符串的位置,返回数据类型为整型。POS共有两个参数:POS(特定字符或字符串,源字符串)。
COPY:字符串截取,返回数据类型为字符型。COPY共有三个参数:COPY(源字符串,起始截取位(整型,可为变量),截取位数(整型,可为变量))。
二、实例演示(笔者以截取特定字符‘.'前5位为例),操作如下:
1、添加TEDIT及TBUTTON控件各一个;
2、在TBUTTON控件的单击事件中,写入代码:ShowMessage(Copy(Trim(ed2.Text),Pos('.',Trim(ed2.Text))-6,5));
3、在TEDIT中随便输入一串字符,点击TBUTTON控件,效果如下图:
三、delphi 中截取字符串怎么做 有两个汉字 求详解~~~
1、在Delphi中,用Length来取字符长度时,会将汉字当成两个字节来计算,Copy把汉字当成两个来处理,可能截取半个汉字,那我们如何知道是否取的是汉字呢?是否把一个汉字取完整了呢?
2、其实,可以用ByteType对取出来的字符进行判断是一个单字符还是汉字的一部分!
3、如果Copy出来的是汉字的第一个字节,就再多(或少)Copy一个,凑成完整的汉字。
4、GetText(strtxt:string;iLen:integer):string;
5、//先判断要截取的字符串最后一个字节的类型
6、//如果为汉字的第一个字节则减(加)一位