from ctypes import CDLL
c = CDLL("msvcrt.dll")
c.printf('a=%d'.encode(),1) #这样正确
c.printf('中国=%d'.encode(),1) # 这里不能正确显示 @: a 浜?1
#----------又如------------
int testFile(const char* filename); /* 打开文件进行一些操作(文件名可能含有中文字符) */
path = r"c:\中文测试.txt" #python 中
API.testFile(path.encode()) # 会出现打开文件出错提示
1
albertofwb 2017-08-26 20:23:38 +08:00
|
2
explist OP 我这里输出:
涓浗=1 |
3
albertofwb 2017-08-26 20:26:54 +08:00 1
我明白了,因为 python 默认的 str.encode() 是 utf8,而我之所以成功是因为 git-bash 本身就是 utf8 环境
如果你在 windows 的 cmd 中运行这段代码,由于 cmd 默认编码是 gbk,所以你代码这样改之后就应该没问题 ```python c.printf('老铁看这里 a=%d'.encode('gbk'),1) ``` |
4
explist OP 我想知道如何传递 path 给 C API.testFile()这个库函数?
|
5
explist OP 呵呵,成功了
path.encode('gbk') |