2016-06-17 2 views
0
  1. 私はキーワードのライブラリを持っています。キーワードはテスト文書にメッセージを書きます。
  2. utf-8このPythonのファイル、および非ASCII記号とロボットのファイルにこのキーワードの実行ができます # -*- coding: utf-8 -*-
  3. *.robotファイルがutf-8

である向かう必要があった:ロボットフレームワーク:古い書式設定%sと新しい書式設定との間のコード化の違い

  1. た場合をキーワードは"%s" % msgです。エラーはありません。通常、ログファイルにはロシア語のメッセージが表示されます。
  2. キーワードは"{}".format(msg)または"{!s}".format(msg)を持っている場合:私はあなたが見ることができるように、私は新しい方法に書式だけ古いのpythonを変更UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-10: ordinal not in range(128)

エラーが発生します。しかし、この問題を解決するには、古い形式の書式を使用せずに、新しい方法でエラーを表示する以外の方法がありますか?

答えて

0

Str.decode(encoding='UTF-8',errors='strict')メソッドを使用してください。 Python docを参照してください。

例:

"{}".format(msg.decode(errors='replace')) 
+0

ない作品。 1.すべてのロシアのテキストが削除され、その理由が2であるため、私は何も置き換えることができません。問題は何とか文字列 '" {} "に' 'ascii''エンコーディングがあることです。なぜユニコードロシア文字列である 'msg'が' ascii'に変換できないのですか?私はRTFMを持っていて、私はpyファイルのヘッダーが動作するはずです(このヘッダーを '# - * - coding:utf-8 - * - ')として設定しましたが、このファイルの文字列はまだ '' ascii ''です。定数文字列を明示的にunicodeとして定義して 'u 'を文字列' 'と書くと、この問題を解決できます。その後はエラーが出ません。しかし、なぜヘッダーが機能していないのですか? –