使用python脚本写入oracle DB时的字符集问题

时间:2017-03-07 10:26:02

标签: python oracle python-2.7 spotfire codepages

我在spotfire中使用python脚本写入oracle表。我从spotfire中选择价值并使用以下部分脚本将其插入数据库。

from Spotfire.Dxp.Data.Import import DatabaseDataSource, DatabaseDataSourceSettings, DataTableDataSource
objID = Document.Properties["OBJID"]
objectname = Document.Properties["ObjName"]
sqlIns = sqlIns + "insert into mytablename (OBJ_ID,OBJ_NAME) VALUES ('" + objID + "','" + objectname + "')" 
print sqlIns
dbsettings = DatabaseDataSourceSettings( "System.Data.OracleClient","Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx.com)(PORT=1530))(CONNECT_DATA=(SID=xxx)));User Id=xxxx;Password=xxx",sqlIns)
ds = DatabaseDataSource(dbsettings)
newDataTable = Document.Data.Tables.Add("temp",ds)
Document.Data.Tables.Remove(newDataTable)  

当OBJ_NAME中的值为英语时,当我在其他语言(例如韩国数据库)中插入OBJ_NAME时显示的值类似于“¿¿¿¿¿¿¿¿¿¿-MD¿¿ 但是当我在python代码上面打印时,我可以看到它显示正确的韩文字符。请看下面的图片。

enter image description here

但是在oracle它没有正确显示。请参阅下面的oracle表截图 enter image description here

由于oracle中OBJ_NAME的数据类型是Nvarchar,如果我从oracle本身插入这个韩语值,它将插入正确的韩语字符。

1 个答案:

答案 0 :(得分:0)

你可以在python脚本中尝试编码为utf-8。