ray88’s diary

お仕事で困ったとき用の自分用の覚書

Uipath 「エンコード"Shift-JIS"はサポートされていません」のエラー解消方法

Uipath モダンエクスペリエンス 目次

UiPath 目次 - ray88’s diary

■モダンエクスペリエンスでCSVを読み込む際、エンコードで「Shift-JIS」を指定すると
 「エンコード”Shft-JIS」はサポートされていませんというエラーが出る。

【解消方法】

InvokeMethodで以下を呼び出せば、その後は"shift_jis"が通るようです。

設定値は以下
TargetType:System.Text.Encording

MethodName:RegisterProvider


引数
Direction:in または「入力」
Type:EncodingProvider
Value:System.Text.CodePagesEncodingProvider.Instance

※パラメーターについて補足

【解説】

UiPathでは、標準でShift-JISエンコーディングがサポートされていないため、特定のファイル操作やテキスト処理でエラーが発生することがあります。この問題を解決する一般的な方法は、.NET Frameworkの機能を利用してShift-JISエンコーディングを動的に追加することです。

具体的には、UiPathで `Invoke Method` アクティビティを使用し、.NETの `System.Text.Encoding` クラスの `RegisterProvider` メソッドを呼び出して、Shift-JISを含む追加のエンコーディングプロバイダを登録します。これにより、UiPathのアクティビティがShift-JISエンコードされたファイルやテキストを正しく扱えるようになります。

`Invoke Method` アクティビティでは、ターゲットオブジェクトに `System.Text.Encoding`、メソッド名に `RegisterProvider`、そして引数に `System.Text.CodePagesEncodingProvider.Instance` を指定することで、Shift-JISを含む多くのエンコーディングが利用可能になります。

この設定は、Shift-JISでエンコードされたテキストファイルの読み書きや、外部システムとの文字コード互換性を必要とする場合に特に有効です。

【補足】

① **`System.Text.Encoding` クラスについて**:
   `System.Text.Encoding` クラスは、.NET Framework内で文字エンコーディングを表すクラスです。このクラスは、さまざまな文字エンコーディングスキーム(例: UTF-8, ASCII, Unicode)をサポートし、文字列とバイト配列間の相互変換を行うメソッドを提供します。

② **`RegisterProvider` メソッドについて**:
   `System.Text.Encoding.RegisterProvider` メソッドは、追加の文字エンコーディングプロバイダをシステムに登録するために使用されます。このメソッドを呼び出すことで、.NET Frameworkの標準外のエンコーディング(例: Shift-JIS)に対応することが可能になります。

③ **エンコーディングプロバイダについて**:
   エンコーディングプロバイダは、特定の文字エンコーディングスキームを実装するためのコンポーネントです。これにより、プログラムは異なるエンコーディングスキームを認識し、それらを適切に扱うことができます。標準のエンコーディング以外に追加のエンコーディングをサポートするために、追加のエンコーディングプロバイダが必要になります。
【参考URL】

forum.uipath.com