UnicodeDecodeError: ‘utf-8’ codec can’t decode byte *** in position 0: invalid start byte

robotframework
本ページはプロモーションが含まれています

はじめに

Robotframeworkでファイルの読み込み時にエラーが発生しました。
今回はその時のエラーの原因と対処方法についてです。

以下のソースは、エラーが発生した時の一部抜粋したものです。
分かりやすく不要な箇所は削除しています。

*** Settings ***
Library OperatingSystem

*** Variables ***

*** Keywords ***

*** Test Cases ***
エンコードを読み込む1
    ${read_file} = Get File テスト_sjis.txt
    Log to Console ${read_file}

読み込もうとしたファイルです。

テスト_sjis.txt

テスト

エラー

表示されたエラーメッセージです。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

エラーメッセージにある様に文字コードによる問題です。
utf-8ではデコードが出来ませんよと書いてあります。

原因&対策

原因はファイル読み込み時のエンコード問題でした。
読み込むファイルがSJISだったのでUTF-8のrobotframeworkではエラーに。

対策としては、

  • 読み込み元ファイルをutf-8に変更
  • 読み込み時にエンコーディングを指定

することでエラーを回避出来ます。
エンコーディングを変更する場合は以下の様にファイルを変更します。

*** Settings ***
Library OperatingSystem

*** Variables ***

*** Keywords ***


*** Test Cases ***
エンコードを読み込む1
    ${read_file} = Get File テスト_sjis.txt    encoding=sjis
    Log to Console ${read_file

11行目、
encoding=sjis
として、エンコーディングを明示的に記しています。

これを実行すると

==============================================================================

エンコードを読み込む1                                                .テスト

エンコードを読み込む1                                                | PASS |

------------------------------------------------------------------------------

Robot Encode                                                          | PASS |

1 test, 1 passed, 0 failed

==============================================================================

とファイルの中身が読み込まれている事が確認出来ます。

さいごに

今回はrobotframeworkでのファイル読み込み時のエンコーディングエラーについてでした。
Pythonのファイル読み込みと同様、引数でencodingを指定する事でエラーを回避出来ます。

この記事がお役に立ったのならば嬉しいです。
最後までお読みいただきありがとうございました。

タイトルとURLをコピーしました