@
qile1 你可以尝试编辑,保存 配置文件 .ini 使用 UTF-8 编码,与 .py 处理方式一致。
Python 3.6.4 (default, Dec 21 2017, 00:56:19)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> s='我是猫'
>>> s.encode('utf-8')
b'\xe6\x88\x91\xe6\x98\xaf\xe7\x8c\xab'
>>> s.encode('utf-16')
b'\xff\xfe\x11b/f+s'
>>> s.encode('utf-16-le')
b'\x11b/f+s'
>>> b'\x11b/f+s'.decode('utf-16-le')
'我是猫'
我之前遇到类似状况:
macOS 的 文件系统里保存一些路径含有空格汉字和各种奇怪字符,
终端(UTF-8)下读到 /代码里 /配置文件(UTF-8)都正确,但 python3 通过 bash call 命令行的工具去访问这些路径时,就找不到了。
好在 python3 的 subprocess 支持路径信息可以直接使用 bytes 类型(按指定编码的字节流),只要原始字串路径是正确的,那么按文件系统 /shell 环境的编码转换后的 bytes 就可以被正确识别+执行。
你可尝试:
1. 你 .py 是直接运行(双击 .py 就关联解析器运行),那么 UTF-8 就 OK 的
2. 你的 .py 一个 cmd/powershell 窗口里运行,那么建议先在 cmd/powershell 里执行 chcp 65001 来让终端编码使用 UTF-8
或许你的 ODBC 驱动里也支持使用 bytes 类型访问数据文件,那么就可以试试:
db_filename1="D:\pythontest\Data.mdb".encode("utf-8")