【发布时间】:2013-11-06 09:25:24
【问题描述】:
我在连接到路径和文件名中都有重音字符的本地 Access 文件时遇到问题。我是 Python 新手,所以这是我目前所管理的:
# coding=utf-8
from __future__ import absolute_import, division, print_function, unicode_literals
import os
import pyodbc
scriptDir = os.path.dirname(os.path.realpath(__file__)).decode('mbcs')
dbRelPath = "MøreCase_v2.accdb"
dbAbsPath = scriptDir + '\\' + dbRelPath
print (os.path.exists(dbAbsPath))
dbConStr = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + dbAbsPath
print (dbConStr)
cnxn = pyodbc.connect(dbConStr)
第一个打印返回'True',另一个打印完整的文件名,但连接失败并出现以下错误:
Exception UnicodeEncodeError: UnicodeEncodeError('ascii', u'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\xxx\case\M\xf8re\M\xf8reCase_v2. accdb', 121, 122, 'ordinal not in range(128)') 被忽略
我尝试将连接字符串解码回系统编码
cnxn = pyodbc.connect(dbConStr.encode('mbcs'))
但后来我收到以下错误:
Traceback(最近一次调用最后一次): 文件“mwe.py”,第 11 行,在 cnxn = pyodbc.connect(dbConStr.encode('mbcs')) UnicodeDecodeError:“ascii”编解码器无法解码位置 121 中的字节 0xf8:ordina l 不在范围内(128)
我也尝试了'cp1252'和'utf-8',但它给出了相同的错误(只是utf-8中的字符代码不同)。
更多信息:脚本文件保存为 utf-8。 我在使用挪威语“语言环境”的 64 位英语 Windows 7 上。
提前致谢。
【问题讨论】:
标签: python encoding pyodbc pypyodbc