ホームページ > ウェブフロントエンド > jsチュートリアル > JScript_javascript スキルで ADODB.Stream を使用してファイル エンコーディングを決定するコード

JScript_javascript スキルで ADODB.Stream を使用してファイル エンコーディングを決定するコード

WBOY
リリース: 2016-05-16 19:03:57
オリジナル
1422 人が閲覧しました

最初は ASCII エンコーディングを使用してテキスト データを読み取り、バイナリ データの読み取りをシミュレートしましたが、文字エンコーディングが 127 より大きい場合、128 の余りに相当する 128 未満の値しか取得できないことがわかりました。したがって、ASCII エンコードは不可能です。

検索を続けたところ、CodeProejct.com で「JScript を使用したバイナリ ファイルの読み取りと書き込み」という記事を見つけました。この記事には、まさに必要なものが含まれていました。

実際、言うのは簡単です。エンコードを変更して 437 を使用するだけです。これは、IBM によって拡張された ASCII エンコードであり、文字セット内の文字を拡張するためにも使用されます。この文字セットを使用して読み取られた文字データは、元のバイナリ データと同等になります。

障害を解決したら、ADODB.Stream オブジェクトを使用してファイルの最初の 2 バイトを読み取り、これらの 2 バイトに基づいてファイルのエンコーディングの識別を開始します。ファイルのエンコーディングが What's up であるかどうかを確認します。

UTF-8 ファイルに BOM がある場合、最初の 2 バイトは 0xEF と 0xBB です。たとえば、Unicode ファイルの最初の 2 バイトは 0xFF と 0xFE です。これらはファイルを判断するための基準になります。エンコーディング。

ADODB.Stream が文字を読み取る場合、1 対 1 の対応はありません。つまり、バイナリ データが 0xEF の場合、読み取った文字は通過後に 0xFE にはなりません。 charCodeAt は別の値です。この対応表は上記の記事にあります。

プログラム コード:

コードをコピー コードは次のとおりです:

function CheckEncoding( ファイル名) {
var stream = new ActiveXObject("ADODB.Stream");
stream.Type = 2; ;
ストリーム .Charset = "437";
ストリーム.LoadFromFile(ファイル名);
switch(bom); / 0xEF,0xBB = > UTF-8
case "%u2229%u2557":
エンコード = "UTF-8"
// 0xFF,0xFE => 🎜> case "� %u25A0":
// 0xFE,0xFF => Unicode ビッグエンディアン
case "%u25A0�":
エンコーディング = "Unicode";
// わかりません ほとんどの場合、中国語が正しく処理されるように GBK を使用してください。
stream = null;


このようにして、必要なときに CheckEncoding 関数を呼び出すことでファイルのエンコーディングを取得できます。
この記事がお役に立てば幸いです。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート