検索

100.9. charset の使用

download PDF

Camel 2.9.3
で利用可能。charset オプションを使用すると
、コンシューマーおよびプロデューサーエンドポイントの両方でファイルのエンコーディングを設定できます。たとえば、utf-8 ファイルを読み取り、ファイルを iso-8859-1 に変換する場合は、以下を行うことができます。

from("file:inbox?charset=utf-8")
  .to("file:outbox?charset=iso-8859-1")

ルートで convertBodyTo を使用することもできます。以下の例では、utf-8 形式のファイルを引き続き入力していますが、ファイルコンテンツを iso-8859-1 形式のバイトアレイに変換したいとします。そして、Beanにデータを処理させます。現在の文字セットを使用して、送信トレイフォルダーにコンテンツを書き込む前に、コンテンツを送信します。

from("file:inbox?charset=utf-8")
  .convertBodyTo(byte[].class, "iso-8859-1")
  .to("bean:myBean")
  .to("file:outbox");

コンシューマーエンドポイントで文字セットを省略すると、Camel はファイルの文字セットを認識せず、デフォルトでは「UTF-8」を使用します。ただし、JVM システムプロパティーを設定して、キー org.apache.camel.default.charset で別のデフォルトエンコーディングを上書きして使用できます。

以下の例では、ファイルが UTF-8 エンコーディングにない場合(ファイルを読み取るデフォルトのエンコーディング)が問題になる可能性があります。
この例では、ファイルを書き込む際に、コンテンツがすでにバイトアレイに変換されているため、コンテンツをそのまま直接書き込みします(追加のエンコーディングは必要ありません)。

from("file:inbox")
  .convertBodyTo(byte[].class, "iso-8859-1")
  .to("bean:myBean")
  .to("file:outbox");

ファイルの書き込み時にエンコーディングを動的に上書きおよび制御することもできます。そのためには、エクスチェンジにエクスチェンジのプロパティーを設定することで、キー Exchange.CHARSET_NAME を使用します。たとえば、以下のルートでは、メッセージヘッダーからの値でプロパティーを設定します。

from("file:inbox")
  .convertBodyTo(byte[].class, "iso-8859-1")
  .to("bean:myBean")
  .setProperty(Exchange.CHARSET_NAME, header("someCharsetHeader"))
  .to("file:outbox");

ここでは簡単にするため、同じエンコーディングでファイルを取得して特定のエンコーディングでファイルを書きたい場合は、エンドポイントで charset オプションを使用してください。

エンドポイントに charset オプションを明示的に設定している場合は、Exchange.CHARSET_NAME プロパティーに関係なく設定が使用されます。

問題がある場合には、org.apache.camel.component.file で DEBUG ロギングを有効にし、特定の文字セットを使用してファイルの読み取り/書き込み時に Camel ログを有効にできます。
たとえば、以下のルートは以下をログに記録します。

from("file:inbox?charset=utf-8")
  .to("file:outbox?charset=iso-8859-1")

ログは以下のようになります。

DEBUG GenericFileConverter           - Read file /Users/davsclaus/workspace/camel/camel-core/target/charset/input/input.txt with charset utf-8
DEBUG FileOperations                 - Using Reader to write file: target/charset/output.txt with charset: iso-8859-1
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.