我在连接到路径和文件名中都有重音字符的本地 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”,另一个打印完整的文件名,但连接失败并出现以下错误:
异常 UnicodeEncodeError: UnicodeEncodeError('ascii', u'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\xxx\case\M\xf8re\M\xf8reCase_v2.accdb', 121, 122, '序数不在范围 (128)') 中被忽略
我试图将连接字符串解码回系统编码
cnxn = pyodbc.connect(dbConStr.encode('mbcs'))
但后来我收到以下错误:
回溯(最后一次调用):文件“mwe.py”,第 11 行,在 cnxn = pyodbc.connect(dbConStr.encode('mbcs')) UnicodeDecodeError:'ascii' 编解码器无法解码位置 121 中的字节 0xf8:序号不在范围内(128)
我也试过'cp1252'和'utf-8',但它给出了同样的错误(只有字符代码在utf-8中不同)。
更多信息:脚本文件保存为 utf-8。我在使用挪威语“语言环境”的 64 位英语 Windows 7 上。
提前致谢。