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を指定する事でエラーを回避出来ます。

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

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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