pb从版本10开始通过内部集成的方式支持Unicode。从而使pb10的程序可以在不同语言平台上处理数据,同时也可以在同一界面上展示多种语言文字。
我们先来学习学习相关的名词:
ANSI:ANSI也就是ASCII值为0-255之间的字符,当字符为ANSI时,存放于文件中占用的是一个字节。如果是非ANSI的呢,则占用两字节。
DBCS:是 Double Byte Char Systems 的缩写,即双字节字符集,也就是亚洲的字符集,完全包容ANSI。
SBCS:是 Single Byte Char Systems 的缩写, 即单字节字符集,包容ANSI。
UTF8:变动长度Unicode编码,最短 1 个字节,一个中文字符占用三个字节。
UTF16LE:双字节Unicode编码, Unicode小尾数法字节顺序(little-endian),例子FF FE (字节顺序标志BOM)41 00 42 00 43 00 。BOM是byte-order mark的缩写。
UTF16BE:双字节Unicode编码,Unicode大尾数法字节顺序(big-endian),例子FE FF (字节顺序标志BOM) 00 41 00 42 00 43。
具体的改动有:
1、PowerBuilder 10 PBLs中的源码全部采用UTF-16LE编码,而之前的版本都是采用ANSI编码。
2、pb10应用程序中输入的文本自动转化为Unicode格式,string和character数据类型只存储Unicode数据格式,并且增加或者改动了部分字符串操作函数。
3、一些涉及文件操作的函数作了修改。
4、外部函数的声明方式作了改动。
5、导入导出文件可以选择编码方式。
6、pbni、xml、Web services等的Unicode支持。
对以前程序的影响:
1、在DBCS环境下,以前用len、mid、left等字符操作函数,都需要改为相应*A的格式,
2、某Api中使用的结构中有char数组。因为此api函数需要的是ANSI格式的数据,而pb10中只存储Unicode格式,如果使用char a[n] = "中文字符"的方式,结果会是乱码。
string a ="中文字符"
char toinfo[]
toinfo = a