0

ディレクトリをスキャンして、指定された文字セット (この場合は UTF-8) としてエンコードされている/エンコードされていないスクリプトを確認できる Windows アプリを知っている人はいますか? 手動で行うこともできますが、時間がかかり、エラーが発生しやすくなります。

4

2 に答える 2

2

UTF-8 は文字セットではなく、Unicode 文字のエンコーディングです。これはプログラミングとは関係ないので、スーパーユーザーに伝えます。

これらのシーケンスを検出するためのプログラムを書きたい場合は、非常に簡単です。

Illegal UTF-8 initial sequences

UTF-8 Sequence       Reason for Illegality 
10xxxxxx             illegal as initial byte of character (80..BF) 
1100000x             illegal, overlong (C0 80..BF) 
11100000  100xxxxx   illegal, overlong (E0 80..9F) 
11110000  1000xxxx   illegal, overlong (F0 80..8F) 
11111000  10000xxx   illegal, overlong (F8 80..87) 
11111100  100000xx   illegal, overlong (FC 80..83) 
1111111x             illegal; prohibited by spec 

1次に、最初のオクテットが有効であれば、コード ポイントを形成するオクテットの数は、最初のビットの前のビット数をカウントすることで取得できることを覚えておいて0ください。

たとえば、11110xxxは 4 オクテット シーケンスの開始であるため、合法性を確立したら 4 オクテット先にスキップする必要があります。

もう 1 つは、すべての継続オクテットが で始まるようにすること10です。

于 2009-11-18T03:06:58.700 に答える
1

これが探しているものかどうかはわかりませんが、コマンド シェルの for-loop を使用し、hdumpユーティリティを使用して各ファイルの最初の数バイトをダンプします。このユーティリティは、ファイルのバイトを 16 進数形式で表示します。次に、各ファイルの先頭にある先頭の 3 バイト UTF-8 署名 (バイト オーダー マーク) を探します。

私のhdumpユーティリティはhttp://david.tribble.com/programs.htmlで入手できます。

于 2009-11-18T03:07:39.633 に答える