英語フランス語スペイン語

Ad


OnWorksファビコン

enc2xs - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで enc2xs を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド enc2xs です。

プログラム:

NAME


enc2xs -- Perl エンコード モジュール ジェネレーター

SYNOPSIS


enc2xs -[オプション]
enc2xs -M ModName マップファイル...
enc2xs -C

DESCRIPTION


enc2xs いずれかのUnicode文字マッピングからEncodeで使用するためのPerl拡張機能を構築します
ファイル (.ucm) または Tcl エンコーディング ファイル (.enc)。 ビルド中に内部的に使用される以外に
Encodeモジュールのプロセス、使用できます enc2xs 独自のエンコーディングを perl に追加します。 いいえ
XSの知識が必要です。

クイック ガイド


Perl についてできるだけ知りたくないが、新しいエンコーディングを追加する必要がある場合は、
この章を読んで残りを忘れてください。

0. .ucm ファイルを準備します。 どこかから取得することも、独自に作成することもできます。
スクラッチするか、Encode ディストリビューションから取得してカスタマイズすることができます。 のために
UCM 形式については、次の章を参照してください。 以下の例では、理論上の
で定義された myascii のエンコーディング 私の.ucm. 「$」はシェルプロンプトです。

$ ls -F
私の.ucm

1. 次のコマンドを発行します。

$ enc2xs -M マイ my.ucm
Makefile.PL の生成
My.pm の生成
README の生成
変更の生成

次に、現在のディレクトリを見てください。 このように見えるはずです。

$ ls -F
Makefile.PL My.pm my.ucm t/

以下のファイルが作成されました。

Makefile.PL - MakeMaker スクリプト
My.pm - サブモジュールのエンコード
t/My.t - テストファイル

1.1.
モジュールと一緒に *.ucm をインストールする場合は、次のようにします。

$ mkdir エンコード
$ mv *.ucm エンコード
$ enc2xs -M 私のエンコード/*ucm

2. 生成されたファイルを編集します。 時間がなく、そのつもりもない場合は、その必要はありません
誰かにあげてください。 ただし、ポッドを編集してテストを追加することをお勧めします。

3. 次に、すべての Perl モンガーが好むコマンドを発行します。

$ perl Makefile.PL
Encode::My の Makefile を書く

4. あとは作るだけです。

作る
cp My.pm blib/lib/Encode/My.pm
/usr/local/bin/perl /usr/local/bin/enc2xs -Q -O \
-o エンコード_t.c -f エンコード_t.fnm
読み取り myascii (myascii)
コンパイル済みフォームの書き込み
文字列テーブルで 128 バイト
384 バイト (75%) 節約された重複の発見
部分文字列を使用して 1 バイト (0.775%) 節約
....
chmod 644 blib/arch/auto/Encode/My/My.bs
$

所要時間は、マシンの速度とサイズによって異なります
エンコーディングです。 euc-tw のような大規模なものに取り組んでいない限り、それほど時間はかかりません。
長い。

5. すでに「make install」できますが、最初にテストする必要があります。

$ テストを作成する
PERL_DL_NONLAZY=1 /usr/local/bin/perl -Iblib/arch -Iblib/lib \
-e 'use Test::Harness qw(&runtests $verbose); \
$verbose=0; 実行テスト @ARGV;' t/*.t
t/私の....わかりました
すべてのテストが成功しました。
ファイル=1、テスト=2、ウォールクロック 0 秒
(0.09 cusr + 0.01 csys = 0.09 CPU)

6. テスト結果に問題がなければ、「make install」してください。

7. Encode のデマンド ロード リストにエンコーディングを追加する場合 (その必要はありません)
"Encode::YourEncoding を使用")、実行

enc2xs -C

ローカル設定を制御するモジュールである Encode::ConfigLocal を更新します。 その後、
「エンコードを使用します。」 必要に応じてエンコーディングをロードするには十分です。

  Unicode 文字 ゲレンデマップ


Encode は、ソース文字マッピングに Unicode Character Map (UCM) 形式を使用します。 この
形式は IBM の ICU パッケージで使用され、Nick Ing-Simmons によって採用され、
モジュールをエンコードします。 UCM は Tcl のエンコーディング マップよりも柔軟であり、はるかにユーザーが
フレンドリです。これが Encode now の推奨フォーマットです。

UCM ファイルは次のようになります。

#
# コメント
#
"US-ascii" # 必須
"ascii" # オプション
1 # 必須; 通常1
1 # マックス。 バイト数/文字
\x3F # 置換文字
#
チャームマップ
\x0000 |00 #
\x0001 |01 #
\x0002 |02 #
....
\x007C |7 # 垂直線
\x007D |7 # 右中括弧
\x007E |7 # チルダ
\x007F |7 #
チャームマップ終了

・「#」以降はコメントとして扱われます。

· ヘッダー セクションは、CHARMAP という単語を含む行まで続きます。 このセクション
の形をしています 、XNUMX 行に XNUMX ペア。 値として使用される文字列は、
引用。 ベアワードは数字として扱われます。 \xXX バイトを表します。

ほとんどのキーワードは一目瞭然です。 サブチャー ではなく、置換文字を意味します
サブキャラクター。 Unicode シーケンスをこのエンコーディングにデコードしたが、一致しない場合
文字が見つかった場合、ここで定義されたバイト シーケンスが使用されます。 ほとんどの場合、
ここでの値は \x3F です。 ASCII では、これは疑問符です。

· CHARMAP は、文字マップ セクションを開始します。 各行には、次のような形式があります。

\xXX.. |0 # コメント
^ ^ ^
| | | | +- フォールバック フラグ
| | +-------- エンコードされたバイト シーケンス
+-------------- XNUMX 進数の Unicode 文字 ID

形式は、フォールバック フラグを除いてヘッダー セクションとほぼ同じです。
0..3 が続きます。 可能な値の意味は次のとおりです。

|0 往復安全。 Unicode にデコードされた文字は、同じバイトにエンコードされます
順序。 ほとんどのキャラクターはこのフラグを持っています。

|1 Unicode のフォールバック -> エンコード。 enc2xs が表示されると、この文字が
マップのみをエンコードします。

|2 コード ポイントがない場合、サブ文字マッピングをスキップします。

|3 エンコードのフォールバック -> Unicode。 enc2xs が表示されると、この文字が
デコードマップのみ。

· そして最後に、END OF CHARMAP でセクションを終了します。

UCM ファイルを手動で作成する場合は、ascii.ucm または既存の
ゼロから独自に作成するのではなく、自分に近いエンコーディングを使用してください。

そうするときは、少なくとも離れることを確認してください U0000 〜へ U0020 そのまま、あなたの環境でない限り
EBCDIC です。

警告: UCM のすべての機能が実装されているわけではありません。 たとえば、icu:state は使用されません。
そのため、アルゴリズムをサポートしたい場合は、perl モジュールを作成する必要があります。
エンコーディング、特に ISO-2022 シリーズ。 そのようなモジュールには、Encode::JP::2022_JP、
Encode::KR::2022_KR、および Encode::TW::HZ。

対処   複製 マッピング
マップを作成するときは、マッピングを往復安全にする必要があります。 あれは、
"encode('your-encoding', decode('your-encoding', $data)) eq $data" はすべてを表します
"|0" としてマークされている文字。 確認方法は次のとおりです。

· マップを Unicode 順に並べ替えます。

· エントリが重複している場合は、どちらかを '|1' または '|3' でマークします。

· '|1' または '|3' エントリが '|0' エントリの後に続くことを確認します。

これは big5-eten の例です。

\xF2550\xF9 |9
\xA2550\xA2 |4

内部的にエンコード -> Unicode および Unicode -> エンコード マップは次のようになります。

E から UU から E
--------------------------------------
\xF9\xF9 => U2550 U2550 => \xF9\xF9
\xA2\xA4 => U2550

したがって、\xF9\xF9 のラウンドトリップは安全です。 しかし、上の行が上下逆の場合は、次のようになります。
起こる

E から UU から E
--------------------------------------
\xA2\xA4 => U2550 U2550 => \xF9\xF9
(\xF9\xF9 => U2550 が上書きされました!)

Encode パッケージには umlint、大雑把ですが、チェックするのに十分なユーティリティです
UCM ファイルの整合性。 これについては、Encode/bin ディレクトリの下を確認してください。

疑わしい場合は、使用できます ucmsort、Encode/bin ディレクトリの下のさらに別のユーティリティ。

ブックマーク


・ICUホームページhttp://www.icu-project.org/>

· ICU キャラクター マッピング テーブルhttp://site.icu-project.org/charts/charset>

・ICU:コンバージョンデータhttp://www.icu-project.org/userguide/conversion-data.html>

onworks.net サービスを使用してオンラインで enc2xs を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad