新しいサービス【AwesomeQR】

外字による文字化けの変換をExcelのpowerQueryで解決した話

5 min 5,344 views
外字をExcelのpowerQueryを使って変換した記事のアイキャッチ

はじめに

外字という言葉を聞いたことがありますでしょうか?

少なくとも私は義務教育でそのような言葉を聞いたことないですし、大学、社会人になっても聞いたことがなく、印刷業界に入って初めて聞きました。

印刷業界では一般的に扱われている用語ですが、今回は外字を知らない方へ外字を知ってもらい、かつ、その外字による文字化けの解決方法を、ExcelのpowerQueryを用いてご紹介したいと思います。

外字とは?

そもそも外字とは何かということですが、ここはいったんチートしてChatGPTに聞いてみたいと思います。

Q

外字とは何かを外字を知らない人に説明してみてください。

A

外字(がいじ)は、一般的な文字セットや文字コードに含まれていない文字のことを指します。つまり、通常のキーボードや文字セットでは直接入力できず、特定の手順や方法を経て表示される文字です。

外字は、主に特定の言語、文字体系、または特殊な目的に使用されます。例えば、特定のアジア言語における特殊な文字や、数学や科学分野で使用される数式記号、絵文字などが外字の一部です。

外字は、専用のフォントやソフトウェアが必要な場合があります。たとえば、特定の文字セットをサポートするフォントをインストールしたり、特殊な文字入力法を使用したりする必要があります。

外字は、情報共有やコミュニケーションの中で重要な役割を果たすことがあります。特定の業界や専門分野では、専用の外字が必要な場合があります。また、絵文字のような外字は、メッセージやソーシャルメディアの投稿で感情や表現を豊かにするために使用されることがあります。

つまり、外字は、通常の文字セットに含まれていない特殊な文字や記号のことであり、表示や入力には追加の設定や特別な手順が必要な文字です。

とてもいい回答ですが、例がないのでややわかりづらいと思います。なので、ChatGPTに例を挙げてもらいましょう。

Q

外字の例を10個挙げてみてください。

A

  1. ☺ (笑顔の絵文字)
  2. ♫ (音符の記号)
  3. ⚛ (原子記号)
  4. ㋐ (和風の数字)
  5. ㊙ (秘密の意味を持つ記号)
  6. ★ (星の記号)
  7. ✈ (飛行機の絵文字)
  8. € (ユーロ記号)
  9. ㍿ (営業終了の記号)
  10. 卍 (まんじ、仏教のシンボル)

これらは一部の例であり、実際にはさまざまな外字が存在します。外字の種類や使用方法は言語、文化、技術などによって異なる場合があります。

④の「和風の数字」、⑨の「営業終了の記号」は間違った表現ですが、見かけたこともある文字も含まれているのではないでしょうか?

外字がなぜ必要か?

それでは、これらが必要な理由もChatGPTに聞いてみましょう。

Q

外字はなぜ必要なのかを外字を知らない人に説明してみてください。

A

外字が必要な理由はいくつかあります。

  1. 特殊な言語や文字体系のサポート: 外字は、特定の言語や文字体系における特殊な文字を表現するために必要です。たとえば、アジアの言語では複雑な漢字やアクセント記号を含む文字が使用されます。これらの文字は通常の文字セットに含まれていないため、外字が必要になります。
  2. 専門分野や業界固有の記号や表現: 数学、科学、工学、コンピュータ科学などの分野では、特殊な数学記号、化学式、技術的な記号などが必要になることがあります。これらの記号や表現は通常の文字セットでは表現できないため、外字が使用されます。
  3. 表現力の向上とコミュニケーションの豊かさ: 外字は、感情や表現を豊かにするために使用されることもあります。絵文字や顔文字はその一例であり、文章に感情やニュアンスを追加するために広く使用されています。外字を使用することで、メッセージや投稿の意図をより正確に伝えることができます。

これらの理由により、外字は言語や表現の多様性をサポートし、より正確な情報伝達やコミュニケーションを可能にします。外字の使用は、特定の文化や分野における重要な要素であり、多くの人々にとって必要不可欠なものとなっています。

求めていた回答ではなかったですが、見事に抽象化された回答だと思います。

上記でなんとなく印刷業界でなぜ外字が一般的に知られているものなのかご理解いただけたと思いますが、特によくあるケースがお名前に外字が使われているケースとなります。

外字による文字化けの例

さて、ChatGPTに外字の例を挙げてもらいましたが、これらは文字化けをしていないので文字コードの種類さえ気を付ければ特段の問題にならないでしょう。

しかし、以下のような文字化けが発生するケースがあります。

文字化け例(外字コードが登録されていないPCで開いた時の表示)

上図のように、Excelのセルに・で表現されてしまっている文字がありますが、こちらは私的領域にある外字コードが登録されているパソコンで開くと以下のようになります。

外字コードが登録されたPCで開いた時の表示

これは特にお名前に使われることがありまして、宛名を印刷する際に気を付けないといけないポイントの一つとなります。

文字化けを変換する方法

なぜ変換する必要があるか?

通常、このようにお名前などで特定の外字を登録されている場合、特定のPCに外字コードを一度登録して、そのPCで組版をしたうえで印刷したり、あるいは、すでに変換する文字が分かっている場合は、特定の文字を共有し、多くの異体字が含まれたフォントで置き換えるなどをして印刷したりします。

ですが、例えば、運送会社などに宛名をウェブ上から登録する際には、外字を変換できませんので、「・」や「?」で表現されてしまい、上記の例ですと、「吉田」さんは「・田」さんとなってしまい、失礼にあたりますし、最悪お届けできないといった事態になります。

それを解消するため、ウェブ上でも認識できる一般的な文字に置き換える必要があります。

文字化けの変換方法

それではようやくメインの話になりますが、文字化けを変換する方法を解説していきます。

  1. STEP

    文字の分割

    まずは、データを読み込んでいきます。

    データの読み込み

    上図のように、データテキストまたはCSVからをクリックして、該当のCSVを選択してインポートをクリックします。

    読み込みデータの選択

    上図のように、データの変換をクリックします。

    すると、下図のようにpowerQueryエディタが立ち上がります。

    データ読み込み後のpowerQueryエディタ画面

    続いて、下図のようにホーム変換列の分割文字数による分割をクリックします。

    文字数による分割の画面

    続いて下図のような画面が出るので、文字数に1を入力してOKをクリックします。

    文字数入力画面

    すると、下図のように文字が分割できました。

    列の分割後の画面
  2. STEP

    外字のチェック

    続いて、外字のチェックをしていきます。

    ここが今回のポイントになります。

    1文字目の外字判定画面

    上図のように、列の追加全般カスタム列をクリックし、以下の関数を入力します。

    if Character.ToNumber([名前.1]) >= 57344 and Character.ToNumber([名前.1]) <= 63743 then "外字" else ""

    Caracter.ToNumber関数はその文字の文字コードの数値を出力する関数になります。

    文字コードの数値が外字コードの数値の範疇であるかをチェックして、その中に該当するものを外字、そうでないものを空欄としています。

    ちなみに、Unicodeで外字と言われる文字は私用領域にありまして、E000~F8FFこの16進数を10進数に変換しますと、57344~63743となります。

    すると、下図のように何も見えていない文字が外字ということがわかります。

    外字チェックの完了画像

    同様にして、2文字目もチェックすると下図のようになります。

    2文字目の外字チェック画面

    通常は、数百件~数万件と宛名がある場合がありますので、いちいち全件確認するわけにはいきませんのでこちらのように外字がないかをチェックしています。

  3. STEP

    外字の変換

    最後に外字を変換します。

    まずは、外字の変換テーブル(その外字に対応する常用漢字の対比表)を用意します。

    そのデータを下図のように、ホーム新しいクエリ新しいソースファイルテキスト/CSVをクリックして読み込みます。

    変換テーブル読み込み操作

    すると、下図のようになるのでそのままOKをクリックします。

    変換テーブル読み込み

    これで下図のように変換テーブルを読み込めました。

    外字変換テーブル読み込み結果

    最後に、このテーブルを使って外字を変換します。

    下図のように、一度、元のデータソースの昇格されたヘッダー数のステップに戻ります。

    ステップの移動画面

    下図のように、列の追加全般カスタム列をクリックすると、ステップの挿入をするかを聞かれるのでそのまま挿入をクリックします。

    カスタム列ステップの挿入画面

    続けて、下図のように以下の関数を入力します。

    外字変換の関数
    List.Accumulate(Table.ToRows(外字変換テーブル),[名前],(x,y)=>Text.Replace(x,y{0},y{1}))
    

    こちらの変換に関しての方法を詳しく知りたい方は、以下のサイトをご確認ください。

    すると、下図のようにきちんと変換されました。

    外字変換結果画面

さいごに

今回は、ExcelのPower Queryを使用して外字による文字化けを解決する方法について紹介しました。

正直なところこのような作業は、ウェブ上では特殊なことをしない限り活用できない文字のため、今後減っていくのではないかと思いますが、文字化けのようなトラブルを避けるためにも知っておいて損はないと思います。

関連記事