ASCII が本当に私にとって初めて重要だったのは、1 人の顧客 & #39; のアドレスを 2 行に分割し続ける WordPress プラグインの CSV インポートをデバッグしていたときでした。ファイルを開いたすべてのエディタでファイルは正常に見えました。1 つのエクスポートでは、裸のキャリッジ リターン (コード 13) を行末として使用していたのに対し、パーサーは改行 (コード 10) を期待しており、迷走レコード セパレーター (コード 30) がメインフレーム エクスポートから上流に忍び込んでいたことが判明しました。それらの文字は何も印刷しません。それらを見ることができません。目に見えないバイトを数字と名前に変えるテーブルがある場合にのみそれらを見ることができます。これがまさに私が構築した理由です アスキーテーブル on Toolz.dev and why I keep it pinned in the browser tab.
tl;dr: ASCII は、すべての基本的な英語の文字と制御信号のセットを数字 0 ~ 127 にマッピングします。 ISO 8859-1 (Latin-1) のような拡張セットは 128 ~ 255 を埋めます。資本
Aは 65, 小文字aは 97、スペースは 32、そして "invisible" コード 0 ~ 31 は、タブ (9)、改行 (10)、キャリッジ リターン (13) などの制御文字です。テーブルを読み取ることができれば、ほぼすべてのテキストエンコーディングのバグをデコードし、HTML 内の任意の文字を安全にエスケープし、UTF-8、JSON、およびすべてのプログラミング言語が文字列に対してそのように動作することを理解できます。
I' WordPress 管理プラグイン、Laravel API、React フロントエンドなど、テキスト処理で生きて死ぬものを何年もかけて構築してきました。ASCII の実用的なメンタル モデルは、他のほぼすべての低レベルの知識よりも多くのデバッグ時間を節約できると言えます。このガイドは、誰かが私に早く渡してくれたらよかったと思うバージョンです。
ASCII とは何ですか?なぜそれが依然として重要なのでしょうか?
ASCIIはAmerican Standard Code for Information Interchangeの略で、1963 年に初めて標準化され、ANSI X3.4-1986 (ISO/IEC 646 としても国際的に公開) として現在でも使用されている形式に落ち着き、現在も引用されているネットワーク定義です RFC 20 (1969).その中心はルックアップテーブルです:数字0から127から特定の文字と制御信号のセットへのマッピングです。 7ビット、128スロット、コンピューティング界全体が共有できる1つの合意。
この合意が、1990 年に Linux サーバー上に書かれたテキスト ファイルが、現在でも Mac ラップトップ上で正しく開く理由です。標準文字コードが登場する前は、どのメーカーも独自のスキームを持っており、マシン間でテキストを移動するのは翻訳の問題でした。ASCII は下位 128 コードを修正し、それ以来移動していません。
人々を驚かせるのは、現代のコンピューティングの多くが、いまだに直接その上に置かれていることだ Unicode - 絵文字、中国語、アラビア語、その他あらゆるスクリプトをカバーする巨大な標準 - は、意図的に最初の128 のコードポイントをASCIIと同一にしている UTF-8、つまりウェブを動かすエンコーディングは、それらの最初の128 のコードポイントを、正確なASCII値を持つ単一バイトとしてエンコードしている つまり、プレーンなASCIIテキストファイルです 同じく 有効な UTF-8 ファイル、バイト単位。 ASCII を理解すると、テキスト エンコーディングの残りの部分が構築される基盤が理解できます。
ASCII テーブルはどのように編成されていますか?
128 の標準コードはいくつかの自然なグループに分類され、多くの場合、単一の値を記憶するよりもグループを知ることの方が役立ちます。
コントロール文字 (0 ~ 31 および 127)。 これらは非印刷コードです。 null (0)、bell (7)、backspace (8)、horizontal tab (9)、line feed (10)、carriage return (13)、escape (27)、delete (127) のグリフではなく命令が格納されています。これらは、you'll が実際に会うものです。これらはテレタイプ マシンを駆動するように設計されており、彼らのゴーストは、ソース ファイルの行末から端末出力を色付けるエスケープ シーケンスまで、あらゆるものを実行します。
印刷可能な句読点と記号 (32 ~ 47、58 ~ 64、91 ~ 96、123 ~ 126)。 スペースは32 - 印刷可能なコードの最低値で、技術的には何も表示されないにもかかわらず印刷文字です 残りはキーボードの周りに散らばっているシンボルです: ! は 33 、 @ は 64 、 ~ は 126.
桁数 (48 ~ 57). 登場人物たちが 0 スルー 9 48 から 57 までのきちんとした実行に座ってください。その順序付けは意図的です。数字から 48 を減算します' s コードを使用すると、その数値が得られます。これにより、ほぼすべての " 文字列から数値を解析します"ルーチンが始まります。
大文字 (65 ~ 90) と小文字 (97 ~ 122)。 A は 65 、 Z は 90; である a は 97、 z は122 です。 letter's の大文字と小文字の形のギャップは、常に正確に32 です。
拡張された範囲 (128 ~ 255) は別の動物であり、it'最も混乱が生じている場所であるため、以下に独自のセクションを示します。
ASCII と拡張 ASCII の違いは何ですか?
標準 ASCII は 7 ビットしか使用しないため、128 コードのみを定義します。しかし、コンピュータはテキストを 8 ビット バイトで保存するため、標準では 128 スロット (128 ~ 255) がすべて未使用のままになります。 "拡張された ASCII" は、それらのスロットを埋めるさまざまなスキームの包括的な用語です。
キャッチ - とit& #39; s a big one - は、単一の拡張ASCIIがないことです 異なるコードページは、上部の128 コードを完全に異なる方法で割り当てます IBM& #39; sコードページ437 は、そこに箱描画文字を入れます Windows-1252 は、そこにカーリー引用符とユーロ記号を入れます ISO/IEC 8859-1、ラテン-1 として知られている、そこにアクセント西欧文字を入れます 値233 のバイトです é ラテン語-1 ですが、コード ページ 437 にはまったく別のものがあります。
On Toolz.dev I shows the ISO 8859-1 (Latin-1) assignment for codes 160-255, because it is a real published standard and it is the basis of the original HTML character set - which means the named HTML entities line up. Toolz.devで私は、ISO 8859-1 (ラテン-1) の割り当てを示すコード160-1 は、制御文字の2 番目のブロックです (the " C1" controls) 、したがって、ツールはそれらをそのようにラベル付けするのではなく、それら& #39; re printable.
実践的なレッスン: 誰かが " と言ったとき拡張アスキー、" 常に尋ねます どちら。 コードページの不一致は、の古典的な原因です é あなたがUTF-8 ファイルがLatin-1 として読まれているとき、または逆が起こるとき、不足している-グリフボックスが表示されているときに、あなたが見る文字化けを理解する データのプライバシーとツールがテキストを処理する方法 1 つの懸念事項です。バイトが文字にどのようにマッピングされるかを理解することは、文字化けしたテキストに二度と驚かないことの残りの半分です。
なぜ大文字と小文字は正確に32 だけ違うのですか?
これは、ASCII デザインの私のお気に入りの部分です。なぜなら、それは事故ではないからです。it's エンジニアリングです。レイアウトは、文字's の大文字と小文字の形式が、値 32 のビット 5 でのみ異なるように選択されました。 A は 65 (バイナリ) 01000001); a は 97 (バイナリ) 01100001).唯一の違いはその単一ビットです.
その決定は、プログラムがルックアップテーブルの代わりに1 ビット単位の操作で大文字と小文字を変更できることを意味します。 、ビット5 をクリアします (小文字を大文字にするには)code & ~32); 大文字の小文字にするには、 () を設定しますcode | 32); どちらかの方法でケースを交換するには、それを反転します ()code ^ 32)。 unicode& #39; s より複雑なケースルールが、プレーンな ASCII を超えたものには安全ではないものにする前に、数十年にわたる文字列ライブラリがそのトリックに基づいて構築されていました。テーブルを閲覧して、すべての大文字がその小文字の双子の 32 の下に正確に配置されていることに気づくと、you& #39; は、ソフトウェアの書き方を今でも形作っている 1960 年代に下された決定を見ています。
文字、10 進数、16 進数、2 進数の間で変換するにはどうすればよいですか?
すべての ASCII コードには 4 つの共通の表現があり、それらの間を移動することは低レベルの作業のルーチン部分です。ここ'文字との関係 H:
| 表象 | の値 H |
どこであなた'それを見てください |
|---|---|---|
| キャラクタ | H |
通常のテキスト |
| 小数 | 72 | String.fromCharCode(72)、 chr(72) |
| 16 進数 | 48 に指定されています | 六角ダンプ、 \x48、 URL/パーセントエンコーディング |
| 80 の | 110 に準拠しております | 古い Unix ツール 、 \110 脱出 |
| バイナリ | 01001000 | ビット単位の操作、プロトコル設計 |
16 進数から単語を綴るには、16 進数の各ペアを 1 バイトとして取ります: 48 69 は 72 105 in decimal, which is Hi。 逆に行くには、各文字& #39; sコードを検索します。 ザ アスキーテーブル 両方向を実行します。コードごとに 5 つの列すべてが表示され、その検索ボックスは文字、10 進数、16 進値 (a の有無にかかわらず) を受け入れます 0x 接頭辞)、8 進数または 2 進数の文字列、さらには HTML エンティティ名も入力します &、 38、または amp 全員がアンパサンドにジャンプします。
もしあなたが'文字列全体を定期的に変換したり、ASCII を超えて数値ベースを越えて作業したりする場合は、 バイナリ トランスレータ そして、 ナンバーベースコンバータ は私が手を伸ばすコンパニオンツールです。 ASCIIテーブルは参照です; その2 つはワークベンチです。
ASCII 制御文字は実際には何のためのものですか?
印刷しないコード 0 ~ 31 (プラス 127) は美術館の作品のように感じられますが、そのうちのいくつかは毎日あなたの生活を動かします。
ラインフィード (10) とキャリッジリターン (13) は大きな2 つです テレタイプでは、キャリッジリターンは印刷ヘッドを左マージンに戻し、ラインフィードは紙を1 行進しました - 2 つの別々の物理アクション その遺産は、Windowsテキストファイルが両方を持つ行を終了する理由です ()CRLF、13 なら10 となるが、UnixとmacOSはラインフィード()だけを使うLF、10). ほぼすべての " なぜ私のファイルがいっぱいです ^M キャラクター?&引用;バグはこの分割に遡ります。イントロからの私の CSV 障害はまさにこれでした。
水平タブ (9) タブ文字です。エディターが複数のスペースとしてレンダリングする 1 つのバイトです。 ヌル (0) 文字列を C で終了し、" をマークします。データなし" 無数の形式で。 エスケープ (27) カーソルを移動し、端子に色を付ける制御シーケンスを紹介します。 ベル (7) 一度実際の鐘を鳴らした;今、それはあなたのターミナルウィンドウをビープ音またはフラッシュします。
良いテーブルがこれらのコードを命名する理由は重要です: データに座っているバイト 27 を見つけるとき、 " ESC - Escape" あなたと #39; re は、破損したテキストではなく、端末制御シーケンスを見ていると即座に生の数字が推測することになります。
ASCII は HTML エンティティと安全なエスケープにどのように関係しますか?
ウェブ用に書くと - そして建物 しっかりした開発者ツールキット つまり、ブラウザが ' をマークアップとして読み間違えるように、少数の ASCII 文字をエスケープする必要があります。小さい記号 < (60)、より大きい > (62)、アンパサンド & (38)、そして二重引用符 " (34) は危険な4 つです。 HTML内に生のままにしておくと、ページを壊したり、注入穴を開けたりする可能性があります; エンティティとして記述されます ()<、 >、 &、 ") 文字通りの文字としてレンダリングされます。
すべてのコードには、数値 HTML エンティティもフォーム内に含まれています &#code;、したがって名前付きエンティティのない文字でも常に安全に記述できる ASCII テーブルには、名前付きエンティティが存在する場所と、それ以外の場合は数値形式がリストされ、HTML 列をクリックすると、クリップボードに直接コピーされ、単一の文字を検索するのではなく、マークアップのブロック全体をエンコードまたはデコードする必要がある場合、 HTML エンティティ ツールはバッチジョブを処理します。私が日々使用しているエンコーディングユーティリティのより深いツアーのために、 コーディング ツール ガイド セット全体を歩きます。
ASCII テーブルは Unicode と同じですか?
いいえ、しかし、they' は意図的に互換性があり、その関係はまっすぐにする価値があります。 Unicode ははるかに大きな標準です - 100 万を超えるコード ポイントが考えられ、すべての書記体系に記号と絵文字がカバーされています。 128 個のコードを含む ASCII は小さなサブセットです。それらがうまく一緒にプレイできるのは、Unicode' の最初の 128 個のコード ポイントが ASCII と同一であると定義されており、UTF-8 がそれらの 128 個を ASCII 値で単一バイトとして正確にエンコードしていることです。
結果はエレガントです: 任意の有効なASCIIファイルは自動的に有効なUTF-8 ファイルです.2 つの間でプレーンな英語のテキストを変換する必要はありません. code 127 - アクセント付きの文字、巻き毛の引用、絵文字 - を超えてステップする瞬間、あなたはASCIIを残し、 you& #39; reは、1 つの文字が2、3、または4 バイトを占有する可能性があるマルチバイトUnicode領域にしっかりと.Toolz.dev ASCIIテーブルは、ASCIIとLatin-1 の範囲を直接カバーし、そのテキストエンコーダは、あなたがそれらを超えて貼り付けた任意の文字のUnicodeコードポイントを報告するので、ASCIIが終了し、Unicodeが引き継ぐ場所を正確に確認することができます。
よくある質問
アスキーとは何ですか?
ASCII (American Standard Code for Information Interchange) は、文字、数字、句読点、および制御信号を数字の 0 ~ 127 にマッピングする文字エンコーディング規格です。 1963 年に ANSI X3.4 として標準化され、最初の 128 コード ポイントが ASCII と同一である UTF-8 を含む、最新のテキスト エンコーディングの基礎として残っています。
"A" のASCII値は何ですか?
大文字の "A" は ASCII 値 65 (16 進数 41、8 進数 101、2 進数 01000001) を持ちます。小文字の "a" は 97 - ちょうど 32 高い - なので、ビット 5 を反転すると文字が大文字と小文字の間で切り替わります。
ASCII と拡張 ASCII の違いは何ですか?
標準 ASCII は 7 ビットを使用し、128 個のコード (0 ~ 127) を定義します。 "拡張 ASCII" 8 番目のビットを使用して、アクセント付き文字、記号、およびボックス描画文字に別の 128 個のコード (128 ~ 255) を追加します。単一の拡張 ASCII はありません。コード ページが異なると、上半分が異なる割り当てが行われます。この表は、Latin-1 HTML 文字セットの基礎となる ISO 8859-1 (Latin-1) 割り当てを示しています。
ASCII コントロール キャラクターとは何ですか?
コード 0 ~ 31 および 127 は、表示されるグリフではなく、命令を運ぶ非印刷制御文字です。 一般的なものには、ライン フィード (10)、キャリッジ リターン (13)、水平タブ (9)、エスケープ (27)、およびヌル (0) があります。 彼らはもともとテレタイプ マシンを制御していましたが、今日でもラインを終端し、フィールドを区切り、ターミナル エスケープ シーケンスを駆動しています。
hex を ASCII に変換するにはどうすればよいですか?
16 進数の各ペアは1 バイトを表し、1 つのASCIIコードにマップされる。 16 進数48は10 進数で72、これは " H"; 16 進数69は105、これは " i" - だから 48 69 の呪文 " Hi" ASCIIテーブルを16 進数の値で検索し(0x接頭辞の有無にかかわらず)、一致する文字を即座に検索します。
ASCII で大文字と小文字が 32 と異なるのはなぜですか?
ASCII は、文字 & #39; の大文字と小文字の形式の唯一の違いがビット 5 (値 32) になるようにレイアウトされました。 "A" は 65、"a" は 97; "Z" は 90、"z" は 122。この意図的な設計により、プログラムはルックアップ テーブルではなく 1 つのビット単位の操作で大文字と小文字を変更できます。
ASCII テーブルは Unicode と同じですか?
同じではありませんが互換性があります。 unicode は、すべての書記体系にわたる 100 万以上のコード ポイントをカバーするはるかに大きな標準です。最初の 128 のコード ポイントは ASCII と同一であり、UTF-8 はそれらを単一バイトとしてエンコードするため、有効な ASCII テキストも有効な UTF-8 です。 ASCII テーブルは ASCII および Latin-1 の範囲をカバーします。; そのエンコーダは、それらを超える文字の Unicode コード ポイントを報告します。
ASCII テーブルを使用するとき、テキストは非公開ですか?
はい。テーブル全体はブラウザでプレーンな JavaScript で生成され、エンコーダに貼り付けたテキストはローカルで処理されます。アップロード、ログ記録、保存されることはなく、ページが読み込まれるとツールはネットワーク接続なしで動作し続けます。
[Toolz.dev](/、WP Adminify) のビルダーである Liton によって書かれ、Laravel プロジェクトと React プロジェクトの長いシリーズは、遅かれ早かれ、バイトを正しく処理することに帰着しました。



