Encoding 将PB7转换为PB10.5后的编码问题

Encoding 将PB7转换为PB10.5后的编码问题,encoding,fonts,powerbuilder,arabic,Encoding,Fonts,Powerbuilder,Arabic,在我从PB7转换到10.5之后,我在旧版本中遇到了问题 存储SQL server数据库阿拉伯字符,它显示字符 在datawindow中,作为没有意义的奇怪符号,如ÓíÉÕíÉÛíÉ?迁移到PB10或更高版本时,需要注意两件事。外部函数调用中的字符串和文件中读取的任何数据,如ini文件或文件读取函数。原因是PB10是基于Unicode而不是ANSI的字符串版本 当字符串数据正常工作时,您将开始遇到字符串数据包含垃圾字符的问题。好消息是PB提供了一种将字符串转换为所需格式的方法,并且两者都有函数 默

在我从PB7转换到10.5之后,我在旧版本中遇到了问题 存储SQL server数据库阿拉伯字符,它显示字符
在datawindow中,作为没有意义的奇怪符号,如ÓíÉÕíÉÛíÉ?

迁移到PB10或更高版本时,需要注意两件事。外部函数调用中的字符串和文件中读取的任何数据,如ini文件或文件读取函数。原因是PB10是基于Unicode而不是ANSI的字符串版本

当字符串数据正常工作时,您将开始遇到字符串数据包含垃圾字符的问题。好消息是PB提供了一种将字符串转换为所需格式的方法,并且两者都有函数

默认的PB10编码是UTF-16,little-endian(编码UTF16LE!)

在PB10中,PowerScript函数Len()、Left()、Mid()和Right()都基于Unicode字符,与现有的LenW()、LeftW()、Mid()和RightW()函数等效

为了将字符串作为字节或ASCII字符而不是Unicode字符进行操作,添加了一组新的LenA()、LeftA()、MidA()和RightA()函数。应用“A”函数时,PowerBuilder将根据计算机的区域设置将Unicode字符串转换为DBCS字符串,然后应用该操作。是对文件的任何读/写,因为在PB10前后它转到了unicode。PB将所有现有函数转换为Unicode,并创建了新版本的函数。因此,在PB10 Powerscript函数Len()、Left()、Mid()中更改为unicode和新函数Len

 Blob lbl_data
 lbl_data = Blob("Hello World!", EncodingANSI!)
 ls_data = String(lbl_data, EncodingANSI!)


 // PB10 and higher
 li_FileNum = FileOpen("MyFile.txt", TextMode!, Read!, EncodingANSI!)

 // PB9 and lower you didn't need EncodingANSI!
 //li_FileNum = FileOpen("MyFile.txt", TextMode!)
如果不添加EncodingANSI!会发生什么?从外部文件获取的所有数据都将是无法读取的垃圾字符。这是升级到PB10或更高版本时最重要的问题,但一旦你弄明白了,就很容易解决


我认为您的数据库问题与编码无关,但这是可能的。如果看到的是垃圾字符,则可能与编码不匹配。

请参阅。这可能会对您有所帮助。我在读取外部函数或文件中的字符串方面没有任何问题,我在SQL server数据库中存储阿拉伯数据方面有问题,数据库表中的数据将字符显示为奇怪的符号,与使用PB7读取此数据时没有任何意义,看起来很好,可读性很好,当使用PB10.5阅读时,它似乎不可读