繁体   English   中英

pyodbc删除unicode字符串

[英]pyodbc remove unicode strings

我正在使用pyodbc连接sqlserver而下面是我的连接字符串..一切正常,但结果作为unicode字符串返回..我在连接字符串中有CHARSET = UTF8,但仍然以unicode字符串形式返回?

有什么方法可以使用连接参数本身来限制它吗?

我不想调用额外的函数将我的unicode转换为普通字符串。

import pyodbc as p

connstr= 'DRIVER={SQL Server};SERVER=USERNAME\SQLEXPRESS;DATABASE=TEST;Trusted_Connection=yes;unicode_results=True;CHARSET=UTF8'
conn = p.connect(connstr)
print conn
cursor = conn.cursor()
result = cursor.execute("select * from employee1")
for each in result:
    print each

您无法在连接字符串中处理此问题。 SQL Server的odbc连接设置中没有CHARSET属性,因此对您没有任何帮助。

您遇到的整体问题是数据在数据库中是unicode。 该列的数据类型是nvarchar,它是一个扩展(UTF-16 ...可能是Windows中的UC-2,不记得)数据类型,包括国际数据字符。

您可以选择通过选择查询中的强制转换来转换数据,例如:

SELECT CAST(fieldname AS VARCHAR) AS fieldname

或者在python中转换它,例如:

# to utf-8
row.fieldname.encode('utf8')

# to ascii, ignore non-utf-8 characters
row.fieldname.encode('ascii', 'ignore')

# to ascii, replace non-utf-8 characters with ?
row.fieldname.encode('ascii', 'replace')

如果您不需要国际字符,则可以将数据存储在varchar而不是nvarchar中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM