Windows TIPS
[System Environment]
  windows tips topへ
windows tips全リストへ
内容別分類一覧へ

Windows 2000のレジストリ ファイルはUnicode形式

槙邑 恭介
1999/12/29

 各国語版向けのソースコードを一本化するなど、国際化対応を一歩進めたWindows 2000では、レジストリ エディタから出力されるレジストリ情報ファイル(.regファイル)の形式が従来のASCIIコード形式から、Unicode形式に変更された。Unicodeは、日本の漢字などを含む世界各国の文字を1つのコード体系で表現しようと考案されたもので、Windows 2000では、内部的な文字列処理をすべてUnicodeで統一している(APIには従来のASCIIコードを受け付けるものも残されているが、内部的にはUnicodeに変換して処理している)。

 周知のとおり、レジストリは、ハードウェア環境からソフトウェア環境まで、Windowsシステムに関するあらゆる情報を一元的に記録・管理しているもので、レジストリの情報はレジストリ エディタ(regedit.exe)で表示、編集することができる。このレジストリ エディタには、レジストリ情報の一部を外部に出力する機能([レジストリ]−[レジストリ ファイルの書き出し]メニュー)があり、これを利用すれば、テキスト形式で情報を出力することが可能である。従来のWindows NT 4.0では、このレジストリ ファイルが通常のASCIIテキスト形式になっていたが、Windows 2000では、これがUnicode形式に変更された。

 Windows 2000のレジストリ エディタでは、互換性を維持するために、従来のASCIIコード形式のレジストリ ファイルも読み込めるようになっているが、筆者が試したところでは、バイナリデータが記述されたエントリを含む、比較的大きなサイズのレジストリ ファイル(ASCII形式)で試したところ、読み込めない場合があった。したがって確実な処理を望むなら、ASCIIコード形式のレジストリ ファイルは、Unicode形式に変換してから読み込むようにしたほうがよい。このコード変換には、Unicodeをサポートしたテキストエディタ(秀丸やWZエディタなど)を利用できるが、Windows 2000に標準で付属するメモ帳で行うことも可能だ。

メモ帳でUnicode形式に変換する

 メモ帳を使う場合は、通常どおりにレジストリ ファイルを開き、[ファイル]−[名前を付けて保存]メニューから表示されるオープンするコモンダイアログボックスの[エンコード]ドロップダウン リストで、[Unicode]を指定する。

メモ帳を使って文字コードをUnicode形式に変換する
非Unicode形式のテキストからUnicode形式への変換処理は、Windows 2000に標準で付属するメモ帳でも行える。これには[ファイル]−[名前を付けて保存]を実行し、表示されるこのダイアログで[Unicode]を選択する。
  Unicode形式で保存する場合にはこちらを選択する。今回の目的ではこちらを選択する。
  文字コードをUnicode形式に変換し、かつ1文字を表す2バイトのデータの順序を逆転させるという設定。

 ちなみに[エンコード]の選択肢には[Unicode big endian]というものもあるが、これはUnicodeの1文字を表す2バイトデータの順序(バイト オーダー)を通常の[Unicode]とは逆転させた形式にする指定だ。ただしWindows 2000のレジストリ エディタが出力するレジストリ ファイルは、[Unicode big endian]ではないほうの形式なので、ここではただの[Unicode]を選択すればよい。秀丸エディタを使用してUnicode形式に変換した場合も、ここで[Unicode]形式を選択して変換したものと同じになる。End of Article

[Unicode]を選択した場合の結果と、[Unicode big endian]を選択した場合の結果比較
Unicodeのファイルでは、先頭がFF-FEかFE-FFとなっている。両者を比較すると、各2バイトデータの出現順序が逆転していることが分かる。
 
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間