このページの本文へ

Windows Info 第431回

Windows上でユニコードを「見る」方法

2024年05月12日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windowsでは、文字コードに「ユニコード」を使う。Windowsに搭載されているフォントはさまざまあるが、ユニコード文字を表示できるように、多数の文字の形が組み込まれている。

 今回は、Windowsでユニコードを“見る”方法について解説する。なお、WindowsではUTF-16LEエンコードをUnicodeと表記する。ここでは、エンコードと混同されないために、文字仕様のUnicodeは「ユニコード」とカナ書きすることにする。

GUIアプリでユニコードを使う

 ユニコード文字は多数ある。それぞれの文字に割り当てられた文字コードをユニコードでは「コードポイント」と呼ぶ。コードポイントは、「U+」の後ろに16進数4桁または6桁で指定するのが正式な表記方法だ。たとえば、「漢」は「U+6F22」となる。ユニコード関連の文書やもちろん、インターネット内のウェブページでも同様の表記をすることが多い。

 GUIアプリに対してユニコード文字の簡単な入力方法の1つは、日本語変換IMEを使う方法だ。

 日本語入力IMEには、文字コード表からの入力を可能にしているものがある。Windowsには「文字コード表」というアプリケーションもある。これらを使うと、表から文字を探して、GUIアプリケーションに入力できる。

ユニコード

Windows標準のアプリ、文字コード表を使えば、ユニコードの文字表をみながら文字を入力(選択)できる

 「Win+ピリオド」で「絵文字パネル」が開くが、最上段の「記号」アイコンを選択すると、ユニコードの記号文字を表から選択して入力可能。また、MS-IMEの使用時には、絵文字パネルで検索できる。また、一部のGUIアプリケーションは記号入力などとして、キーボードから直接入力できない文字を入力する手段を提供している。

 このとき、「グループ」や「種類」などとして、ユニコード文字をカテゴリ分けしている。これは、ユニコードのブロックに相当する。ユニコードでは英語の名称で「Character Code Charts」(https://www.unicode.org/charts/)に一覧がある。

 このページで検索欄にコードポイントの16進数表記を入れると該当のブロックの文書を探してくれる。ブロック名の日本語訳は、JIS X 0221:2020の附属書Aの「A.2 ブロックの一覧」に「日本語による通用名称(参考)」として表記されている。多くの文字コード表で使われる分類名はこれを元にしている。JIS規格書は、日本産業標準調査会(https://www.jisc.go.jp/index.html)で見ることができるがユーザー登録などが必要だ。

文字のコードポイントを調べる

 PowerShellを使うと、文字のコードポイントを簡単に調べることができる。文字からコードポイントを調べるには、

[char]::ConvertToUtf32(<文字列>,<文字位置>)

を使う。

ユニコード

文字や文字列からユニコードのコードポイント(文字コード)を調べるには、[Char]::ConvertToUtf32メソッドを使う。文字列と変換したい文字位置を指定すれば、コードポイントが10進数で返る。16進数書式文字列"X"をtoStringメソッドで適用すれば、16進数表示となる。[Char]::ConvertFromUtf32を使えば、コードポイントから文字を表示させることができる

 位置は、文字列内でコードポイントに変換したい文字の位置を指定する。先頭は0、次の文字は1である。

 逆にユニコードのコードポイントから文字を表示させるには、

[char]::ConvertFromUtf32(<コードポイント>)

を使う。なお、PowerShell Ver. 6.x以上ならば、コードポイントから文字への変換にUnicodeエスケープシーケンス「`U{コードポイント}」を使うことができる。

一筋縄ではいかないのがWindows

 Windowsでは、ユニコード文字列などにはUTF-16というエンコード方法を内部的に使う。これは、1文字を16bitで表現する方法である。しかし、ユニコードのコードポイントは、0x0000~0x10FFFFまであり、16bitではすべて表わしきることができない。そこでUTF-16では、「サロゲートペア」と呼ばれる方法を使い、0x10000以上のコードポイントを16bit文字2つを使って表現する。

 ひらがなや数字など多くの文字がUTF-16の1文字で表現できる0x10000未満にあるとはいえ、場合によっては文字列にサロゲートペアが含まれる可能性がある。サロゲートペアが入ると、文字位置や文字列長が「見た目」と一致しなくなる。エクセルなどの文字列関数の結果が「考えていたのと違う」ことになる。

ユニコード

Excelにさまざまな文字を入れ、文字列関連の関数を適用させたところ。Len/LenB関数の戻り値が見た目と異なる点に注意。Windowsではサロゲートペアを1文字として扱うため、想定と異なる結果が得られる。LEFT/LEFTB関数では、先頭部分のみの場合、絵文字の女性の髪型が異なっている点にも注意してほしい。IVSで異体字を表示させるには、異体字を含むフォントを指定する必要がある

 そうなる原因は、サロゲートペアだけでなく、絵文字などで使われる「ゼロ幅接合子」や、異体字セレクタ(Variation Selectors)の漢字異体字シーケンス(IVS。Ideographic Variation Sequence)もある。こちらはユニコードのルールなので、エンコードに関係なく文字列に含まれてしまう可能性があるが、面倒なのはこれにサロゲートペアが関わることだ。絵文字や異体字セレクタは、Windowsでは、サロゲートペアとして表現されるからだ。

 絵文字は、Windowsの絵文字パレットで入力可能だが、IVSを含む文字は、日本語入力IMEから入力し、異体字を含むフォント(IPAmj明朝など)をアプリケーション(Excel)側で指定する。たとえばATOKならば、文字パレットを起動し、「異体字検索」タブで漢字とフォントを指定すれば、異体字が表示される。フォントに異体字が含まれていないと表示されないので注意してほしい。

ユニコード

ATOKでは、文字パレットで異体字の検索ができる。異体字には複数のデータベースがある。IVSコレクションで文字の下に表示されている16進数値の左側が異体字セレクタだ

 MS-IMEならば、文字パレットの歯車アイコンから「IMEの設定」を開き、「全般」にある「変換候補の一覧に含める文字セットを選択する」で「すべて」を選ぶと、変換候補に異体字が含まれるようになる。

 ゼロ幅接合子を含む絵文字や異体字セレクタを含む文字列は、PowerShellのコマンドラインでも正しく表示されないことがある。これらの文字を含む文字列では、コマンドラインでカーソル位置がずれてしまう。

 このような場合、対象の文字列をクリップボードに入れ、Get-Clipboardコマンドを使って参照するのが簡単だ。文字列を16進数で出力させたいなら「Format-Hex」コマンドで文字エンコードを指定する。メモ帳などにいったん対象を書き込み、クリップボードにコピーする。

 絵文字なら、「Win+ピリオド」で絵文字パネルを開いて、絵文字(たとえば「女性:巻き毛」)を選び、メモ帳に貼り付ける。右クリックメニューから「Unicode制御文字の表示」を選択すると、「女性:巻き毛」が3つに分かれる。このうちの先頭部分を「Alt+X」でコードに変換すると、「WOMAN」(U+1F469)と「EMOJI MODIFIER FITZPATRICK TYPE-1-2」(U+1F3FB)になる。

 これに「ゼロ幅接合子。ZWJ(ZERO WIDTH JOINER)」(U+20D)と、「EMOJI COMPONENT CURLY HAIR」(U+1F9B1)が続く。結局4つのコードポイントから構成されていることがわかる。

ユニコード

メモ帳に絵文字(女性:巻き毛)を入れ、「Unicode制御文字の表示」機能と、「Alt+X」キーによる文字とコードポイントの変換機能を使うことで、絵文字の構成要素を分解できる。コードポイントがわかれば、ユニコードコンソーシアムのCharacter Code Chartsから、それぞれの文字の定義ドキュメント(PDF)にたどり着くことができる

 メモ帳で「Unicode制御文字の表示」をオフにして、絵文字「女性:巻き毛」をクリップボードにコピーする。PowerShell Ver.6以降で以下のコマンドを実行すると、コードポイントをバイト単位で表示できる(残念ながらWindows PowerShellでは動かない)。

ユニコード

PowerShellもIVSや絵文字を直接文字列に入れてしまうと、コマンドラインでカーソル位置と編集位置がずれてしまう。このような場合には、クリップボードに対象文字(文字列)を入れておき、Get-Clipboardコマンド(エイリアスはgcb)を使ってアクセスするといい

 なお「gch」は、Get-Clipboardコマンドのエイリアスである。一回目は単に対象文字を出力し、2回目のgchをパイプラインで処理している。

gcb;gcb | Format-Hex -Encoding bigendianutf32 | select HexBytes

 出力はバイト単位だが、32bit分つまり4バイトが1つのコードポイントになる。エンコードにビッグエンディアンのUTF-32を指定してあるので、バイトの並びは、上位から下位の順になる。先頭から4バイトごとに32bitのコードポイントを表す。

 これをUTF-16で表現したものは、以下のコマンドで見ることができる。

gcb;gcb | Format-Hex -Encoding bigendianunicode | select HexBytes

 出力はバイト単位なので今度は2バイトごとに見る。エンコードに「ビッグエンディアンのUTF-16」を指定しているので、バイト順は、上位・下位である。先頭がDで始まる2バイトがサロゲートペアになり、4バイト分で1文字に対応する。これをみるとコードポイントで0xFFFFを越えるものがすべてサロゲートペアになっている。

 PowerShell Ver.6以上なら、この絵文字は、文字列「"`u{1F469}`u{1F3FB}`u{200d}`u{1F9B1}"」として表現できる。

 ちょっとした文字列処理でも、サロゲートペアが入り込むと、スクリプト/マクロやセル数式などの出力が思いも寄らないものになる可能性がある。こうしたとき、PowerShellコマンドなどで、コードポイントやUTF-16での16進数出力を見ることができるなら、その原因を判別しやすい。

カテゴリートップへ

この連載の記事
1
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
¥19,800
2
【Amazon.co.jp限定】 HP ノートパソコン 15-fd 15.6インチ インテル Core i5-1334U メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M4PA-AAAB)
【Amazon.co.jp限定】 HP ノートパソコン 15-fd 15.6インチ インテル Core i5-1334U メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M4PA-AAAB)
¥122,280
3
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,979
4
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
5
Lenovo ノートパソコン IdeaPad Slim 5 Light 13.3インチ AMD Ryzen™ 5 7535HS メモリ16GB SSD512GB バッテリー駆動22.8時間 重量1.15kg クラウドグレー 83J20009JP
Lenovo ノートパソコン IdeaPad Slim 5 Light 13.3インチ AMD Ryzen™ 5 7535HS メモリ16GB SSD512GB バッテリー駆動22.8時間 重量1.15kg クラウドグレー 83J20009JP
¥129,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
7
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,555
8
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
¥1,040

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン