pb10的字符操作

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 ="中文字符"
for i=1 to LENA(A)
    lpData.szInfoTitle[i] =  MidA(a,i)
next


不知道还有没有好方法,这种方法供大家参考。

其他的影响我暂时还没有遇到,欢迎大家补充。:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值