我有一个数据类型编码为 EncodingUTF-8 的文本文件。如果纯英文字符,则所有数据都成功解析并导入表。但是如果字段中混有汉字,就会出现问题。如果有汉字这样的混合字符,如何成功读取和解析数据。
下面是一个包含中文字符的文本制表符分隔文件的示例。在调试模式下,变量 ls_unicode 保存文本文件的值,并且存在中文字符,
当数据保存在表中时,输出如下:
下面的脚本设法获取汉字并且DW更新方法返回成功但是当我检查列中的值时,它显示“Globe MUX Project(?????:NA)”而不是Globe MUX Project(客户合同号:NA)。我还从调试模式验证了值 Globe MUX Project(客户合同号:NA) 存在。DB 列也更改为 NVarChar 数据类型。
//#################################
li_FileNum = FileOpen(is_sourcepath, StreamMode!, Read!, LockWrite!)
ll_FileLength = FileLength(is_sourcepath)
eRet = FileEncoding(is_sourcepath)
IF eRet = EncodingANSI! and ll_filelength <= 32765 THEN
li_bytes = FileReadEx(li_FileNum, lbl_data)
ls_unicode = String(lbl_data, EncodingUTF8!)
dw_1.Reset( )
dw_1.ImportString(ls_unicode)
ls_sonum = String(dw_1.Object.shipmentOrderNum[1])
ls_chinesechar = String(dw_1.Object.contractnum[1])
sle_char.Text = String(dw_1.Object.contractnum[1])
dw_1.SetItem(1,'contractnum',ls_chinesechar)
dw_1.SetItem(1,'fname','TEST')
END IF
FileClose(li_FileNum)
IF dw_1.Update( ) = 0 THEN
Commit Using SQLCA;
END IF
//#################################
我也做了一个测试,做了一个手动的SQL Insert语句,它成功地在列中记录了值'Globe MUX Project(客户合同号:NA)'。如果列数据类型是 NVarChar/NChar/或 NText,我认为 PB 不会自动执行此操作。
INSERT INTO SCH_HUAWEI_EDI_3B12RHDR ( COntractnum , FNAME )
VALUES ( N'Globe MUX Project(客户合同号:NA)' , 'TEST' )