下面的SQL Insert语句用于插入unicode字符串,并在SQL Server Management Studio或查询分析器中执行时成功运行。
Column Specs:
SONUM VARCHAR(50)
CONTRACTNUM NVARCHAR(150)
FNAME VARCHAR(70)
INSERT INTO SCH_EDI_3B12RHDR ( SONUM, CONTRACTNUM, FNAME )
VALUES ( 'DPH11309160073CC' , N'Globe MUX Project(客户合同号:NA)' , 'TEST' )
使用数据存储区/数据窗口进行插入操作时,是否可以实现前缀N?如果有,怎么样?下面是PB中当前脚本成功插入数据但中文字符被'?'(问号)替换。
ls_sonum = String(dw_1.Object.shipmentOrderNum[1]) //This holds the value : DPH11309160073CC
ls_chinesechar = String(dw_1.Object.contractnum[1]) // This holds the value : Globe MUX Project(客户合同号:NA)
dw_1.SetItem(1,'sonum',ls_sonum)
dw_1.SetItem(1,'contractnum',ls_chinesechar)
dw_1.SetItem(1,'fname','TEST')
dw.AcceptText( )
IF dw.Update( ) = 1 THEN
Commit Using SQLCA ;
END IF
答案 0 :(得分:1)
你需要把自己挂钩到dw / ds的sqlpreview事件并添加N'你自己。或者如果你使用静态(或禁用?)绑定,你根本不需要做任何事情。 这些都在在线文档中进行了解释。
答案 1 :(得分:0)
我验证了PB版本10的OLE DB驱动程序支持Unicode。您可以在this Sybase document on page nine中找到相关信息。
ODBC / JDBC / OLEDB / ADO.NET数据库支持
客户端/服务器PowerBuilder 10应用程序可以与数据库交换Unicode和ANSI数据 由ODBC,JDBC,OleDB和ADO.NET数据库接口支持,无需任何操作 特殊设置。
建议在使用字符串函数时尝试强制使用不同的编码,有四种选择(参见下面的代码示例)
编码参数是以下之一:
■EncodingANSI!
■编码UTF8!
■EncodingUTF16LE! - UTF-16 Little Endian编码(PowerBuilder 10默认)
■EncodingUTF16BE! - UTF-16 Big Endian编码
// use the correct encoding for your actual data
ls_sonum = String(dw_1.Object.shipmentOrderNum[1], EncodingUTF16BE! ) //holds DPH11309160073CC
ls_chinesechar = String(dw_1.Object.contractnum[1], EncodingANSI!) // holds Globe MUX Project(客户合同号:NA)
我可能会引导你走错路,但我认为这值得尝试,可能会解决问题。