Go to main content
Oracle® Solaris 11.3 国際化対応言語環境の利用ガイド

印刷ビューの終了

更新: 2016 年 11 月
 
 

コードセット変換

コードセット変換、つまり文字セット (charset) 変換のサポートは、ほとんどのアプリケーションがこの機能に依存することで正しく機能しているため、オペレーティングシステム には不可欠な部分です。

Oracle Solaris の現在のリリースには、Unicode のサポート、ソフトウェアの国際化、およびソフトウェアのグローバル化のために広く使用されているライブラリとツールである、Unicode 用の国際化コンポーネント (ICU) も組み込まれています。

Oracle Solaris 11 には、コードセット変換のためのさまざまなツールとライブラリが組み込まれています。中核となるコードセット変換ユーティリティー、iconv は、Oracle Solaris libc 内の iconv ライブラリを基に構築されています。

iconv ユーティリティー

iconv(1) コマンド行ユーティリティーは、文字または文字のシーケンスを、1 つのコードセットから別のコードセットに変換します。これは広範囲のコードセットをサポートします。コードセット名はプラットフォームによって異なることがよくあるため、iconv の別名メカニズムによって多くのコードセットが複数の名前でサポートされます。システムで現在使用可能なコードセットのリストを取得するには、次のコマンドを実行します。

$ /usr/bin/iconv -l

複数のパッケージに iconv モジュールが含まれているため、追加のパッケージをインストールすることでデフォルトのリストを拡張できます。デフォルトのインストールには system/library/iconv/utf-8 パッケージが含まれ、これに、UTF-8 やその他の Unicode コードセットと選択されたほかのコードセットとの間の変換用の、iconv モジュールの基本セットが含まれています。その他のパッケージは、パッケージマネージャーの「システム/国際化」カテゴリから、または pkg(1) コマンドを使ってインストールする際に system/library/iconv/* という名前のパターンを使用することで入手できます。

iconv —f オプションはソースコードセットを定義し、-t オプションはターゲットコードセットを定義します。次のように、iconv を使用すると、ファイル、つまり標準入力を、標準出力に変換できます。

$ /usr/bin/iconv -f eucJP -t UTF-8 file.txt

この例では、file.txt ファイル名が eucJP コードセット (日本語 EUC、Extended UNIX Code Packed Format for Japanese) から変換され、結果が UTF-8 で標準出力に書き込まれます。

Oracle Solaris 11 では、iconv が拡張されて、これらの特殊な状況での変換の動作を変更するフラグが組み込まれました。

  • 不正な文字 – 入力文字が宣言されたソースコードセットで有効ではない

  • 同一でない文字 – ターゲットコードセットに一致する文字がない

//ILLEGAL_DISCARD//NON_IDENTICAL_DISCARD//IGNORE、および //TRANSLIT のようなフラグも、コマンド行で使用できます。詳細は、iconv_open(3C) のマニュアルページを参照してください。


注 - Oracle Solaris の iconv モジュールのいくつかは、iconv_open(3C) のマニュアルページで説明されているフラグのサブセットのみを実行する場合があります。

iconv の詳細は、iconv(1)iconv(3C)iconv_open(3C)、および関連するマニュアルページを参照してください。

Unicode 用の国際化コンポーネント

Oracle Solaris 11 では、使用可能なインタフェースに Unicode 用の国際化コンポーネント (ICU) の C/C++ ライブラリが追加されます。ICU は、ソフトウェアアプリケーションに Unicode とグローバル化のサポートを提供する、成熟した、幅広く使用されているライブラリのセットです。ICU には移植性があり、すべてのプラットフォーム上で、および C/C++ と Java のソフトウェアの間で、同じ結果が得られます。

ICU が提供するサービスの一部に含まれるもの:

  • コードページの変換 – Unicode や、ほとんどすべてのその他の文字セットまたはエンコーディングとの間で、テキストデータを変換します。

  • 照合 – 特定の言語、地域、または国の慣例や標準に従って、文字列を比較します。

  • 書式設定 – 選択されたロケールに応じて、数値、日付、時間、および通貨金額を書式設定します。

  • 時間計算 – 複数の種類のカレンダーとタイムゾーン計算 API の完全なセットが提供されます。

  • Unicode のサポート – ICU は、多くの Unicode 文字プロパティー、Unicode 正規化、ケースフォールディング、および Unicode 標準に規定されているその他の基本的な処理のすべてへのアクセスを容易にして、Unicode 標準を詳細に追跡します。

  • 正規表現 – ICU の正規表現は、Unicode を完全にサポートすると同時に、非常に競争力のあるパフォーマンスを提供します。

  • 双方向テキスト (Bidi) – 左から右および右から左のデータの混在を含むテキストの処理をサポートします。

  • テキスト境界 – テキストの範囲内で単語、文、および段落の位置を見つけたり、テキストを表示するときの行の折り返しに適した位置を識別したりします。

Oracle Solaris 11 の ICU は 2 つのパッケージに分けられていて、library/icu にはライブラリのみが含まれていますが、developer/icu は、ヘッダーファイルと、uconv(1) のようないくつかのユーティリティーを提供します。

詳細は、プロジェクトの Web サイト (http://site.icu-project.org) を参照してください。libicui18n(3LIB)、libicuio(3LIB)、libicudata(3LIB)、libicule(3LIB)、libiculx(3LIB)、libicutu(3LIB)、および libicuuc(3LIB) のマニュアルページに、Oracle Solaris でライブラリを使用する方法が記載されています。

uconv ユーティリティー

iconv(1) に加えて、Unicode 用の国際化コンポーネント (ICU) ツールセットの一部である uconv(1) コマンドも、1 つのエンコーディングから別のエンコーディングへの変換に使用できます。uconv は、229 のエンコーディングと、1000 を超える別名をサポートしています。

このツールは、デフォルトではインストールされない developer/icu パッケージの一部です。これをインストールするには、次のコマンドを発行します。

# pkg install developer/icu

cp-1252 エンコーディングのテキストを UTF-8 に変換するには、次のように入力します。

$ uconv -f cp1252 -t UTF-8 -o file_in_utf8.txt file_in_cp1252_encoding.txt

uconv のもう 1 つの機能は、ベースとなる単語を変換せずに 1 文字ごとに文字を変換する、転写です。次の例では、ギリシア語のテキストの一部がラテン語の文字に変換されます。

$ echo “Σολαρις”| uconv -x Greek-Latin -f utf-8 -t utf-8
Solaris

このツールの機能の詳細は、 uconv (1) のマニュアルページを参照してください。

ファイル検査機能 (fsexam)

ファイルエンコーディング検査機能 fsexam ユーティリティーでは、ファイルの名前、または標準テキストファイルの内容を、古い文字エンコーディングから UTF-8 エンコーディングに変換できます。fsexam ユーティリティーには次の新しい機能が含まれています。

  • エンコーディングリストのカスタマイズ

  • エンコーディングの自動検出

  • 予行演習、ログファイル、バッチ変換、ファイルのフィルタリング、シンボリックファイル、コマンド行、および圧縮ファイルのような特殊なファイルタイプのサポート

システムに fsexam を追加するには、storage/fsexam パッケージをインストールします。詳細は、fsexam(1) および fsexam(4) のマニュアルページを参照してください。

エンコーディング自動検出 (auto_ef)

Oracle Solaris には、auto_ef(1) という、ファイルのエンコーディングを識別するためのコマンド行ユーティリティーが含まれています。auto_ef は、iconv コード変換を使用してエンコーディングを判定し、ファイルに対して特定のコード変換が成功したかどうかを判断します。これは、ファイル内に出現する文字シーケンスの頻度分析も行います。例:

$ auto_ef test_file
eucJP

-a オプションを使用すると、指定されたファイルに可能なすべてのエンコーディングが表示されます。

$ auto_ef -a test_file
eucJP           0.89
zh_CN.euc       0.40
ko_KR.euc       0.01

システムに auto_ef を追加するには、text/auto_ef パッケージをインストールします。詳細は、auto_ef(1) のマニュアルページを参照してください。