那这个确实是跟128有关啊。国际化下,字符是Unicode编码,2byte一个字符。字符字段的限制为256byte,故最多容纳128个Unicode字符。而DBCS是不定长的编码,如果全是英文字符,就可以容纳256个,如果其中夹杂汉字(Unicode编码),总字符数就会减少(但用len()计算,汉字的字符数是2,用lenc()算才是1)。SET COLLATE TO 'PINYIN',指定用Unicode编码,则最多计数到128个字符,因为全部要乘以2到达256byte的限制。可能正是这个原因,在SET COLLATE TO 'PINYIN'的时候,就只能传出128个字符,而SET COLLATE TO 'MACHINE'是用机器内码ASCII传递的,按256计数。
VFP的字段,最大容纳是256byte,所以它宣称字符字段的最大字符数是254个字符,这是在DBCS编码中说的,在Unicode编码下,它只能算是128个字符。
[ 本帖最后由 TonyDeng 于 2012-3-2 16:35 编辑 ]
VFP的字段,最大容纳是256byte,所以它宣称字符字段的最大字符数是254个字符,这是在DBCS编码中说的,在Unicode编码下,它只能算是128个字符。
[ 本帖最后由 TonyDeng 于 2012-3-2 16:35 编辑 ]
授人以渔,不授人以鱼。