エンコーディング関数 ​

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

エンコーディング関数は、名前付き文字エンコーディングを使用してテキストとバイトを変換し、メールヘッダーで使用されるencoded-word形式を処理します。

これらの関数は、Shift_JISのメインフレームエクスポート、Windows-1252のレガシーCSV、アクセント付きの名前を含むメールヘッダーなど、システムがUTF-8を扱えない場合に重要です。エンコーディングが間違っていると、éであるべき箇所がéとして表示される文字化けしたテキストが生成されます。

エンコーディングはエスケープではありません

エンコーディングは、どのバイトが文字を表すかに関するものです。エスケープは、形式内でどの文字が安全かに関するものです。 CSVに送信されるアクセント付きの名前にはその両方が必要であり、一方が他方の代わりになることはありません。

機能の提供状況

WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。

テキストからバイトへ、そして元に戻す ​

次の関数は、指定された文字エンコーディングでテキストとバイトを変換します。

encode_string ​

名前付きエンコーディングを使用して文字列をBinaryに変換します。

テキストに非ASCII文字が含まれる可能性がある場合は、Binary()ではなくencode_stringを使用します。 Binary()は、エンコーディングを選択する代わりに、非ASCII入力に対してE008を発生させます。

text
encode_string(text, encoding)
パラメーター説明
テキストエンコードする文字列。
encodingUTF-8やShift_JISなどのエンコーディング名。
アクセント付き文字列をUTF-8としてエンコードする

次の例では、アクセント付き文字列をUTF-8バイトとしてエンコードします。

Formula

text
encode_string('café', 'UTF-8')

出力

text
0x"636166C3A9"

éは2バイトのC3A9を占めるため、4コードポイントの文字列caféは5バイトにエンコードされます。 lengthはコードポイントを数え、grapheme_lengthはユーザーが認識する文字を数え、byte_lengthはバイトを数えます。 ASCII以外では、この3つが異なる場合があります。

decode_string ​

名前付きエンコーディングを使用してBinaryを文字列に変換します。

text
decode_string(binary, encoding, options)
パラメーター説明
バイナリデコードするバイト。
encodingバイトで使用されているエンコーディング。
options無効なシーケンスの処理方法を制御する任意のマップ。 invalid: 'replace'は置換文字で置き換え、'skip'はそれらを削除します。

デフォルトでは、無効なシーケンスによりエラーが発生します。代わりにバイトをサイレントに置き換えると、データの問題が、誰にも気付かれない破損したレコードになります。

UTF-8バイトを文字列に戻す

次の例では、UTF-8バイトを元の文字列に戻します。

Formula

text
decode_string(encode_string('café', 'UTF-8'), 'UTF-8')

出力

text
café

decode_string_by_content_type ​

ユーザーが指定したものではなく、HTTPContent-Typeヘッダーで指定されたcharsetを使用してバイトをデコードします。

制御できないエンコーディングのHTTPレスポンスを処理する場合に使用します。

text
decode_string_by_content_type(binary, content_type, options)
パラメーター説明
バイナリデコードするバイト。
content_typeContent-Typeヘッダー値。
optionsヘッダーに指定がない場合に使用するfallbackエンコーディングを指定する任意のマップ。

変換前の確認 ​

次の関数は、テキストまたはバイトが指定されたエンコーディングをサポートしているかどうかをテストします。

ascii_string? ​

文字列にASCII文字のみが含まれている場合はtrueを返します。

text
ascii_string?(text)
パラメーター説明
テキストテストする文字列。
プレーン文字列はASCIIです

次の例では、プレーンなASCII文字列をテストします。

Formula

text
ascii_string?('plain')

出力

text
true
アクセント付き文字列はASCIIではありません

次の例では、アクセント付き文字を含む文字列をテストします。

Formula

text
ascii_string?('café')

出力

text
false

convertible_to_encoding? ​

指定されたエンコーディングが、何も失わずに文字列を表現できる場合はtrueを返します。

制限された文字セットを持つシステムにテキストを送信する前に、変換可能性を確認します。文字がサイレントに置き換えられたレコードを配信するよりも、ここでレコードを拒否する方が適切です。

text
convertible_to_encoding?(text, encoding)
パラメーター説明
テキストテストする文字列。
encodingターゲットエンコーディング。
アクセント付き文字列がASCIIに適合するかをテストする

次の例では、アクセント付き文字列を損失なくASCIIに変換できるかどうかをテストします。

Formula

text
convertible_to_encoding?('café', 'ASCII')

出力

text
false

valid_string? ​

バイトが指定されたエンコーディングで有効であり、デコードできる場合はtrueを返します。

text
valid_string?(binary, encoding)
パラメーター説明
バイナリテストするバイト。
encodingテスト対象のエンコーディング。
有効なUTF-8バイト

次の例では、有効なUTF-8であるバイトをテストします。

Formula

text
valid_string?(Binary('AB'), 'UTF-8')

出力

text
true

encodings ​

サポートされているエンコーディング名を一覧表示します。同義語を含めるにはtrueを渡します。

text
encodings(include_synonyms)
パラメーター説明
include_synonyms任意のBoolean。

メールヘッダー ​

メールヘッダーに含められるのはASCIIのみです。 RFC 2047は、その範囲外のものをすべて=?UTF-8?B?...?=のようなencoded-wordでラップします。

encode_mime_header ​

メールヘッダー用に、テキストをRFC 2047のencoded-wordとしてエンコードします。

text
encode_mime_header(text, encoding, mode)
パラメーター説明
テキストエンコードするヘッダーテキスト。
encoding使用する文字エンコーディング。
mode任意のエンコーディングモード。
アクセント付きの名前をヘッダー用にエンコードする

次の例では、アクセント付き文字列をRFC 2047のencoded-wordとしてエンコードします。

Formula

text
encode_mime_header('café', 'UTF-8')

出力

text
=?UTF-8?B?Y2Fmw6k=?=

decode_mime_header ​

メールヘッダー内のRFC 2047 encoded-wordをテキストに戻します。

text
decode_mime_header(text)
パラメーター説明
テキストデコードするヘッダー値。
RFC 2047 encoded-wordをデコードする

次の例では、RFC 2047 encoded-wordをテキストに戻します。

Formula

text
decode_mime_header('=?UTF-8?B?SGVsbG8=?=')

出力

text
Hello

ユースケース: レガシーASCII専用システム用に名前を準備する ​

送信先はASCIIのみを受け付けます。送信前にconvertible_to_encoding?を使用して各名前を確認し、破損したテキストを配信するのではなく、適合しないものをルーティングします。

入力

json
{
  "names": ["Kalani Park", "Noam Gupta", "José Álvarez"]
}

Formula

text
let parts = _.names >> partition_by(n ~> convertible_to_encoding?(n, 'ASCII'))
do {
  send: parts >> at(0),
  needs_review: parts >> at(1)
}

出力

json
{
  "send": ["Kalani Park", "Noam Gupta"],
  "needs_review": ["José Álvarez"]
}

送信前に変換可能性を確認し、Jos? lvarezのような破損したテキストを受け取る代わりに、担当者がレコードを修正できるようにします。

  • Binary関数: 文字エンコーディングを必要としないBase64と16進数。
  • Unicode関数: 正規化と書記素を考慮したテキスト処理。
  • Escape関数: 別の形式内で値を安全にします。
  • エラーコード: E008などのジョブ失敗をトラブルシューティングします。

最終更新日: