WindowsでUnicode文字を簡単に入力したり、Unicodeの文字コード番号を調べたりする方法:Tech TIPS
ある特定のUnicode文字を入力したい場合、Unicodeの文字コード番号が分かっていれば、それを簡単にUnicode文字に変換することができる。また逆に文字からそのUnicode文字コード番号も簡単に調べられる。
対象ソフトウェア:Office 2016/Office 2013/Office 2010/WordpadなどのWindows向けアプリのリッチテキスト入力
解説
Unicodeは、従来のシフトJISコードでは表現できなかった異体字やめったに使わないような文字も利用できるなど、利便性が高く、最近ではUnicodeを使った文書の作成が一般的になっている。
Windows OSでUnicode文字を入力するには、OSに標準で付属している[アクセサリ]−[システムツール]−[文字コード表]アプリ(Windows 8.1以降なら[Windowsアクセサリ]−[文字コード表])を使うか、IMEの入力支援機能などを使うのが一般的である。
だがUnicodeの文字コード番号(「U+3042」や「U+29E49」など)が分かっているならもっと簡単な方法がある。キーボードショートカットによるUnicode入力支援機能を使うのである。本TIPSではその方法を紹介する。またこの機能を使うと、既に入力されている文字のUnicode番号に簡単に逆変換することもできる。
Unicodeの仕組みや、それを元にしたUTF-8のようなエンコード方法についてここでは述べないので、別稿のTech Basics「Unicode」「UTF-8」を参照していただきたい。
操作方法
Windows OSでは、いわゆる「リッチエディットコントロール」において、Unicode文字を文字コード番号から直接入力する機能がサポートされている(おおむね、Windows XP以降のWindows OSで利用できる)。
リッチエディットコントロールとは、「ワードパッド」アプリケーションの入力欄のように、書式付きでテキスト文字を入力できる入力フィールドのことである。これは、OS標準のエディットコントロールを使ったアプリケーションの他、Officeアプリケーションに含まれる(おおむねOffice XP以降の)WordやOutlook(のメール作成画面)、OneNoteなどでも同様に利用できる。
リッチエディットコントロールではなく、ただのテキストエディットコントロールでは以下の方法は利用できない。例えばメモ帳では利用できない。
●Unicodeの文字コード番号からUnicode文字に変換する
Unicodeの文字コード番号から、そのUnicode文字に変換するには、文字コード番号の直後にカーソルを置いてから、[Alt]+[X]キーを押すだけである。すると、直前の文字コード部分が該当するUnicode文字に置換される。ただしアプリケーションによっては[Alt]キーに対して特別な処理を行っており、この方法が利用できないこともあるので、各アプリケーションで試してから使用していただきたい。
Unicodeの文字コードは「U+611B」もしくは単に「611B」のように表記する(コード部分は16進数で表記すること。英字の大文字/小文字は関係ない)。そして文字コードの直後にカーソルを移動してから[Alt]+[X]キーを押す。
Unicode文字コード番号からUnicode文字に変換する(1)
リッチテキストが利用できる場所では、Unicodeの文字コードをテキストで入力し、その直後で[Alt]+[X]キーを押すと、そのコードがUnicode文字に変換される。
(1)これが入力したいUnicodeの文字コード番号。
(2)Unicodeの文字コードを入力するか、既に入力済みのUnicode文字コード表記の直後の位置へカーソルを移動させる。
(3)ここで[Alt]を押しながら[X]キーを押す。
(4)するとUnicode文字に変換されるはずである。変換されない場合は、その場所では利用できない(このアプリケーションでは利用できない)。
先頭に「U+」が付いていなくても構わない。
Unicode文字コード番号からUnicode文字に変換する(2)
先頭に「U+」と付いていなくても構わない。
(1)「U+」なしのUnicode文字コード表記。単なる16進数の数値列。
(2)数字列の直後にカーソルを移動させる。
(3)[Alt]+[X]を押す。
(4)やはりUicodeの文字に変換される。
Unicodeとして定義されている「U+21」から「U+10FFFF」までの文字コードなら、いずれでも上記のように変換できる。ただし文字コード番号に対応するフォント(文字グリフ)が定義されていないと正しく表示されないので、あらかじめ適切なフォントを選択しておくこと。
なお「U+10000〜」の文字を変換する場合は、「サロゲートペア」ではなく、元の「U+10000〜」の文字コード番号をそのまま使うこと。例えば「U+29E49」(トビウオ)という漢字はサロゲートペアを使って「U+D867」「U+DE49」とも表現できる。だが、この2つを個別に[Alt]+[X]で変換して「トビウオ」の漢字1文字にすることはできない。「U+29E49」に対して[Alt]+[X]を適用すること。
また、UTF-8などの符号化されたコードも使用できない。
Unicode文字への変換例
さまざまなコードをUnicode文字へ変換してみたところ。左側が変換前の文字列、右側が変換後の文字。Unicodeの文字コードとして解釈できない部分はそのまま残る(Unicodeとして解釈できる16進数部分だけが変換される)。
(1)先頭の「U+」の有無にかかわらず、これらは1文字のUnicode文字に変換される。
(2)これは「Unicode絵文字」の例。「U+10000」以降のUnicode文字でも変換できる。
(3)「U+100」未満のコード、つまりいわゆる1byte系のASCII文字でも変換できる。
(4)カーソルの直前にある連続する16進数は「D2」なので、この部分だけがUnicode文字に変換される。
(5)カーソルの直前にある連続する16進数は「22」なので、この部分だけがUnicode文字に変換される。
(6)カーソルの直前にある文字「g」は16進数ではないので、これはUnicode文字からUnicode文字コード番号への変換と見なされ、「g」が「67」に変換される(これは逆変換機能。詳細は後述)。その前にある文字列はそのままである。
●10進数で表現したUnicodeの文字コード番号からUnicode文字に変換する
もしUnicodeの文字コードの10進数表現が分かっているなら、もう1つ別の方法もある。それはキーボードで、[Alt]キーを押しながら、テンキー部分の数字キーを使って(英字の上に並んでいる数字キーは不可。必要なら[NumLock]キーをオンにすること)文字コードを10進数で入力することである。
例えば16進数の「611B」(漢字の「愛」のコード)を10進数に変換すると「24859」になるので(「電卓」アプリを「プログラマ」モードにすると簡単に変換できる)、[Alt]キーを押しながら、テンキー部で[2][4][8][5][9]と順に入力し、最後に[Alt]キーを離す。すると「愛」という文字(U+611B)が入力される。
[Alt]キーを押しながら10進数を入力する方式は、Windows OS以前のMS-DOSの時代からあるものだが、リッチエディットテキストコントロールではなく、(メモ帳などで使用されている)テキストコントロールに対して行う場合は、「255」までのコードしか(1byte系のASCIコードしか)入力できない。
●Unicode文字をUnicodeの文字コード番号に変換する
最初の方法の応用として、既に存在する文字(Unicode文字)をUnicodeの文字コード番号に逆変換することもできる。方法は簡単で、ある文字の直後にカーソルを置いてから[Alt]+[X]キーを押す。するとカーソルの直前の文字がUnicodeの文字コード番号に変換される。これも、利用するにはリッチエディットコントロール上での操作が必要である。
Unicode文字から文字コード番号に変換する
[Alt]+[X]キーを押した場合に、直前の文字が16進数の数値列でなければ、その文字をUnicodeで表現した場合の文字コード番号列(16進数)に置換される。
(1)これが変換したいUnicode文字。
(2)Unicode文字の直後へカーソルを移動させる。
(3)ここで[Alt]を押しながら[X]キーを押す。
(4)するとUnicodeの文字コード番号に変換され、文字列が選択状態になるはずである。変換されない場合は、その場所では利用できない(このアプリケーションでは利用できない)、ということ。
この状態でまた[Alt]+[X]を押すと、元のUnicode文字に変換される。
■この記事と関連性の高い別の記事
- WindowsでInternet Explorerを使って文字コードを変換する(TIPS)
- WindowsからiPhone/iPod touch/Macに送ってはいけない文字とは?(TIPS)
- nkfツールで文字コードを変換する(Windows編)(TIPS)
- Windows 2000のレジストリ ファイルはUnicode形式(TIPS)
- メールの文字コードを理解する(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.