在 python Popen 调用中使用特殊字符

Using special characters in python Popen call

我正在开发一个 python 2.7 应用程序,旨在将文件上传到 2007 Sharepoint。服务器是 OpenSUSE 机器上的 运行。我现在这样做的方式是使用子进程的 Popen 来执行 curl 命令。但是,python 在文件名包含特殊字符(例如“á”、“õ”、“ç”)时引发 UnicodeEncodeError。

我可以通过强制转换来解决 Unicode 错误
命令字符串从 str 到 Unicode,但随后文件以错误的格式名称转到 Sharepoint(例如,Manutenção 变成了 Manuten'c~ao)。下图描述了我正在使用的函数的实现:functions used

有人知道我应该如何进行吗?

P.S.: 我宁愿继续使用 curl 命令来执行请求,但我们对其他命令开放解决方案

编辑: 没有尝试 pycurl,但我会看一看。 Linux dist 运行 服务器是3.11.10。 执行流程如下:

  1. 从 utf-8 数据库读取文件名和路径
  2. 为 Sharepoint
  3. 中的文件选择目的地 url
  4. 构建类似于“curl --ntlm -u usr:pwd --upload-file filelocalPath fileSharepointUrl -k[=36= 的 curl 命令]
  5. 使用convert_to_utf_8功能(查看附图)
  6. 使用 Popen 发出请求(如 __execute_curl_cmd_and_wait 函数)

好的,伙计们,我找到问题了

由于我是 运行 我在 Linux 机器上编写代码,因此 Popen 命令以 utf-8 编码并以这种方式发送到 Sharepoint。但是,Sharepoint 2007 使用的编码似乎是一些 latin-1 或 windows-1252。

我在 运行 在 Windows 机器上使用相同的代码并用一堆其他编码对该行进行编码后得出了这个结论。正如预期的那样,只要编码为 windows-1252 或 latin-1(由 win cmd 识别),上传就可以正常进行。

感谢您的回复。