相关文章推荐
begin nStrA := '你好123'; ShowMessage(IntToStr(TEncoding.ANSI.GetByteCount(Memo1.Text))); {7} nStrU := '你好123'; ShowMessage(IntToStr(TEncoding.Unicode.GetByteCount(Memo1.Text))); {10} nStrUTF8 := '你好123'; ShowMessage(IntToStr(TEncoding.UTF8.GetByteCount(Memo1.Text))); {9}

经实际测试发现,在XE2中 Length取的是字符数,等同于Oracle数据库中的length,结果完全一样。在Dephi2007中同样的一段文字,length结果为12492,XE2中是6502,在Notepad++中是18482,说明不同的编码环境,占用的字节是完全不同的

public class Length Byte { public static void main(String[] args) { String str = "123abc试试看?"; byte[] b = str.getBytes(); System.out.println(str + "共包含" + b. length + "个 字节 "); 其 只用 length 无法正确区分,因为汉字是占两个 字符 ,而英文和数字只需要 一个 字符 。很明显发现 Length 计算出来 长度 为50,进行 判断 英文则 长度 为71。使用 delphi 进行区分 一个 字符 串的汉字、英 文字 母且计算 长度 。 【ShortString】   ShortString 是一种比较古老的 Pascal 字符 串格式,它最多只能容纳 255 个 字节 字符 。当我们声明 一个 ShortStri 在 Delphi ,用 Length 来取 字符 长度 时,如果有汉字,那它会将汉字当成 一个 字符 来计算,而Copy把汉字又当成两个来处理,关键的是Copy 一个 字符 后,我如何知道是否取的是汉字呢?是否把 一个 汉字取完整了呢? 判断 字符 串的 长度 我们可以不用 Length ,改用StrLen(PChar(S1))来实现,但Copy呢?     其实,用ByteType对取出来的 字符 进行 判断 ,我们可以得知这个字... 查了一下网上的 方法 ,大部分用ord、bytetype或ord+bytetype 方法 ,但不知道为什么,XE10.2下 判断 的结果不对。用ORD的,函数的参数应该是WideChar,string无论如何转变都不行,查了一下,有的说以前版本可以支持直接强制转换,可是在高版本下就是不行。研究了一下,XE10.2版本下通过:var s1:string;if (ord(s1[1]) < 40869) an... #include <tchar.h> #include <memory> //For STL auto_ptr class //--------------------------------------------------------------------------- #pragma argsused int _tmain(int a...
 
推荐文章