我正在使用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
Run Code Online (Sandbox Code Playgroud)
您无法在连接字符串中处理此问题.SQL Server的odbc连接设置中没有CHARSET属性,因此对您没有任何帮助.
您遇到的整体问题是数据在数据库中是unicode.该列的数据类型是nvarchar,它是一个扩展(UTF-16 ...可能是Windows中的UC-2,不记得)数据类型,包括国际数据字符.
您可以选择通过选择查询中的强制转换来转换数据,例如:
SELECT CAST(fieldname AS VARCHAR) AS fieldname
Run Code Online (Sandbox Code Playgroud)
或者在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')
Run Code Online (Sandbox Code Playgroud)
如果您不需要国际字符,则可以将数据存储在varchar而不是nvarchar中.
| 归档时间: |
|
| 查看次数: |
8977 次 |
| 最近记录: |