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...