2017-11-16 5 views
0

私は2007 SharepointにファイルをアップロードするためのPython 2.7アプリケーションを開発中です。サーバーはOpenSUSEマシン上で実行されています。私が今これをやっているのは、curlコマンドを実行するためにPopenというサブプロセスを使うことです。しかし、ファイル名に特殊文字( 'á'、 'õ'、 'ç'など)があると、PythonはUnicodeEncodeErrorを発生させます。Pythonでの特殊文字の使用Popen call

私は、コマンド文字列をUnicodeにSTRからの変換
を強制することにより、Unicodeのエラーを回避することができますが、そのファイルは、(例えば、ManutençãoはManuten'c〜AOとなります)悪いの書式名でSharePointのために行きます。次の画像は、私が使用している機能の実装について説明しています:functions used

私はどのように進めるべきですか?

PS:私は要求の実行のためにcurlコマンドととどまることを好むだろうが、我々は

EDIT他のソリューションに開放している:はpycurlをしようとしませんでしたが、私はよそれを見てみましょう。サーバーを実行しているLinuxディストリビューションは3.11.10です。 実行フローは以下の通りです:Sharepointので

  1. UTF-8データベース
  2. からファイル名とパスを読むファイルの保存先のURLを選択してください
  3. カール」に似たcurlコマンドを構築します - -ntlm -u USR:PWD --uploadファイルfilelocalPath fileSharepointUrlは(__execute_curl_cmd_and_wait関数のように)要求を行う(添付画像をご確認ください)
  4. 使用popenのをconvert_to_utf_8関数を使用 "
  5. を-k
+1

pythonアプリケーションはどこで実行されますか(* nixまたはWindows)?あなたはpycurlを使用しようとしましたか? [mvce](https://stackoverflow.com/help/mcve)に従った詳細情報を提供してください。 –

+0

いいえ、私はそれを試していない、私はそれを見てみましょう。私は自分の投稿を編集しました。助けて欲しいと願っています。 –

+0

'Manutenção'を' Manuten'c〜ao'に変換すると、カールやPythonのように聞こえません。 Sharepointサーバーが名前を変更していないと確信していますか?カールが送信している正確なヘッダーは何ですか( 'curl -vv ... 'で見つかりました)? – Blender

答えて

0

[OK]を、私はLinuxマシン上で私のコードを実行していたので、みんなが、私は問題

を考え出し、popenのコマンドは、UTF-8でエンコードされ、この方法をSharePointのために送られました。しかし、Sharepoint 2007で使用されているエンコーディングは、latin-1またはwindows-1252の一部であるようです。

Windowsマシンで同じコードを実行し、他のエンコーディングでコードをエンコードした後、この結論に至りました。予想どおり、エンコードがwindows-1252またはlatin-1(win cmdで認識された)であれば、アップロードはOKになりました。

返信いただきありがとうございます。