目次
この記事は、64 ビット Windows 7 の簡体字中国語バージョンの特定のインスタンスでのみ検証されており、参照のみを目的としています。他の同一または異なるシステム上で一貫した結果を再現できるという保証はありません。
すべての文字の GBK および Unicode エンコードは次のとおりです:
Windows メモ帳が ANSI を使用してこのファイルを保存した結果は次のとおりです。
の異なる
を指します。 UTF-16 は非常に単純かつ粗雑なシリアル化方法です。ほとんどの Unicode 文字は U 0000 ~ U FFFF
のみが含まれており、
UTF-8
番外:Notepad++的字符编码测试
ホームページ 開発ツール Notepad Windows メモ帳のオプションの文字エンコーディング

Windows メモ帳のオプションの文字エンコーディング

Feb 05, 2021 pm 03:42 PM
unicode windows ノート

次のチュートリアル コラムでは、Windows メモ帳のオプションの文字エンコーディングについて紹介します。困っている友人の役に立てば幸いです。

Windows メモ帳のオプションの文字エンコーディングの簡単な分析Windows メモ帳のオプションの文字エンコーディング

@lizheming (グループの Windows メモ帳 (メモ帳) についての質問)ファイルを保存するためのエンコード オプションは何を意味しますか...

この記事では、単に Windows メモ帳の動作をテストします。

▲ Windows メモ帳のエンコードには、ANSI、Unicode、Unicode ビッグ エンディアン、UTF-8 が含まれます。

Windows メモ帳のオプションの文字エンコーディング警告

この記事は、広く使用されているソフトウェアの技術的事実を説明するだけであり、作成者がそのソフトウェアの使用を支持または反対することを意味するものではありません。

実際、著者は、コンピューター プログラム コードを扱う際には、いかなる場合でも Windows メモ帳を使用しないことをお勧めします。

この記事は、64 ビット Windows 7 の簡体字中国語バージョンの特定のインスタンスでのみ検証されており、参照のみを目的としています。他の同一または異なるシステム上で一貫した結果を再現できるという保証はありません。



この記事では、Unicode の

エンコーディング

バイト シリアル化

を厳密に区別します。 Unicode の Encoding は、数値 (通常は 16 進数で記述される) を使用して文字を 1 対 1 で表現する作業のみを指します。この数値の範囲は Unicode 標準によってのみ制限されており、コンピューターとは関係ありません。 Unicode の
バイト シリアル化 は、コンピュータ メモリに書き込めるようにするために、Unicode 標準範囲内の数値を N バイトに表現する作業を指します。
テスト ケーステスト ケースは「锟斤[改行]a[改行]」です。 (Kun Jin Kao は信念です。)

すべての文字の GBK および Unicode エンコードは次のとおりです:

锟GBK=

EFBF

Unicode=
    U 951F
  • 金GBK=BDEF Unicode=
  • U 65A4
  • copyGBK=BFBD Unicode=
  • U 62F7
  • 次の ASCII 文字の GBK および Unicode エンコードは ASCII と一致しています:
a=

0x61

CR=
0x0D

LF=0x0A (Windows では 1 つの改行文字が 2 文字を占めます: CR LF) ANSI

簡体字中国語システムでは、ANSI は中華人民共和国の国家標準によって定義された GBK エンコードです。中国。

Windows メモ帳が ANSI を使用してこのファイルを保存した結果は次のとおりです。

EF BF  BD EF  BF BD  0D  0A  61  0D  0A
-----  -----  -----  --  --  --  --  --
ログイン後にコピー

単純に GBK エンコードを使用してすべての文字を保存します。最上位ビットが 1 ではない 1 バイトで ASCII と同等、それ以外の場合は 2 バイト。

ここでバイトオーダー(エンディアン)の問題に注意する必要があります

[注A]

。ここでのバイトオーダーは

big-endian

であることがわかります。 ただし、「ビッグ エンディアンが最初の GBK」を特に強調する必要はありません。GB2312 以降、標準ではストレージ方式がビッグ エンディアン ファーストであることが規定されているためです。[注 B]。以降の GBK は GB18030-2000 と下位互換性があります。

ANSI の問題点は、システムに依存することです。他の言語システムの ANSI は GBK ではないため、GBK で開かれたファイルは必然的に文字化けします。そしてGBK自体の文字セットが小さすぎます。 (決して「中国語しか使わない」とは言わないでください。Unicode の記号がなければ、インターネット上の絵文字は入力できません。)

Unicode シリーズ


Windows のメモ帳で「Unicode」と表示されたもの、 「Unicode ビッグ エンディアン」と UTF-8 はすべて、同じ Unicode

encoding

の異なる

バイト シリアル化

格納方法です。 UTF-16 と BOMここでの Unicode は、UTF-16

[注 C]

を指します。 UTF-16 は非常に単純かつ粗雑なシリアル化方法です。ほとんどの Unicode 文字は U 0000 ~ U FFFF

[Note D]

の範囲にあり、各文字は 2 バイトを使用し、Unicode エンコーディングの元の値を書き込みます。ディスクに。 ASCII 文字は、0x00 の上位 8 ビットを格納するために 2 倍のスペースを浪費する必要があることに注意してください。0 の上位 8 ビットが省略されると、解析中にハイフネーションを行うための他の根拠がなくなるからです。 UTF-16 には、ビッグ エンディアンとリトル エンディアンの問題があります。UTF-16 では、バイトが最初にビッグ エンディアンであるかリトル エンディアンであるかが指定されていません。ただし、UTF-16 にはバイト順序を示す情報が含まれていないため、どの解析が文字化けしていないかを手動で確認することはできません...

Unicode が提供する解決策は、

ゼロ幅の解読不可能な文字列を変換することです。文字スペース文字

(

U FEFF

ZERO WIDTH NO-BREAK SPACE) は UTF-16 でシリアル化され、ファイルの先頭に詰められます。このように、UTF-16 パーサーはファイルの最初の 2 バイトを読み取ります。FE FF の場合はビッグエンドが最初であることを意味し、FF FE はリトルエンドが最初であることを意味します。 この詰め込まれたものをBOM(Byte Order Mark、バイトオーダーマーク)といいます。

ゼロ幅のハイフンなしのスペース文字

は、さまざまな状況で単語制限を破るための有効な文字としてもよく使用されることに注意してください。 SegmentFault の Q&A とコメントが含まれます。

メモ帳の「Unicode」と「Unicode ビッグ エンディアン」

「Unicode」だけを書くことは、まったく記憶方法の完全な表現ではありません。これには、
encoding

のみが含まれており、

バイト シリアル化

は含まれていないためです。

M$出现这种错误,我一点都不觉得奇怪。死记结论就可以了:Windows Notepad的“Unicode”就是UTF-16

Windows Notepad使用“Unicode” = 小端在先的UTF-16,存储这个文件的结果如下:

 FF FE 1F 95 A4 65 F7 62 0D 00 0A 00 61 00 0D 00 0A 00
 -BOM- ----- ----- ----- ----- ----- ----- ----- ----- 
U+FEFF  951F  65A4  62F7  000D  000A  0061  000D  000A <p>Windows Notepad使用<strong>“Unicode big endian” = 大端在先的UTF-16</strong>,存储这个文件的结果如下:</p><pre class="brush:php;toolbar:false"> FE FF 95 1F 65 A4 62 F7 00 0D 00 0A 00 61 00 0D 00 0A
 -BOM- ----- ----- ----- ----- ----- ----- ----- ----- 
U+FEFF  951F  65A4  62F7  000D  000A  0061  000D  000A <h3 id="UTF">UTF-8</h3><p>UTF-8是一种用1~4个字节表示1个Unicode字符的<strong>变长的</strong>字节序列化方法。具体的实现细节看这篇文章。UTF-8的好处在于:</p><ol>
<li>无论是IETF的推荐,还是实际业界的执行,UTF-8都是互联网的标准。</li>
<li>向下兼容,ASCII字符UTF-8序列化后仍是原样,任何ASCII文件也是有效的UTF-8文件。</li>
<li>没有字节序问题。UTF-8的字节序是由RFC3629定死的。</li>
</ol><p>Windows Notepad使用UTF-8存储这个文件的结果如下:</p><pre class="brush:php;toolbar:false"> EF BB BF  E9 94 9F  E6 96 A4  E6 8B B7  0D   0A   61   0D   0A
 --BOM---  --------  --------  --------  --   --   --   --   --
U+ FEFF      951F      65A4      62F7   000D 000A 0061 000D 000A <p>注意UTF-8前边仍然塞进去了<code>U+FEFF</code>按照UTF-8序列化的结果<code>EF BB BF</code>,作为前边提到过的<strong>BOM</strong>字节顺序标记。<strong>Windows Notepad存储的UTF-8,是带有BOM标记的UTF-8</strong>。</p><p>但是如果仅仅对于UTF-8而言,字节序是没有意义的。因为UTF-8的字节序被规范写死,<code>U+FEFF</code>编码后必然得到<code>EF BB FF</code>,得不出其他的。没有二义性,BOM就失去了原本的意义。也许只有区别UTF-8文件和UTF-16文件的用处……</p><p>如何对待UTF-8文件的BOM,RFC3629的第6章有详细的规定,不加详述。</p><p>值得一提的是,BOM我想很多PHP程序员都经历过并且恨之入骨——PHP不认识文件中的BOM头并会将其作为HTTP Response的正文送出。这甚至在无缓冲的情况下,会导致<code>header()</code>等必须在Response开始前执行的函数直接失效。</p><p>所以PHP程序员总是会喜欢<strong>UTF-8 without BOM</strong>的编码方式——这基本也就宣布了Windows下的PHP开发,Windows Notepad完全的淘汰出局,哪怕是任何一星半点代码的临时修改。</p><h2 id="番外-Notepad-的字符编码测试">番外:Notepad++的字符编码测试</h2><p>ANSI没有区别,但Notepad++支持选择多国编码的不同ANSI编码方式(类似浏览器里选编码),可以轻松生成或读取Shift-JIS等其他字符集的文件。适合用于对付日文老游戏的<code>README</code>等文档。</p><p>UCS-2 Big Endian、UCS-2 Little Endian和前边UTF-16的两个例子一致。注意UTF-16的文件不提供“无BOM”的存储方法(提供了就坏了)。</p><p>UTF-8仍然代表“带有BOM标记的UTF-8”。但同时提供PHP程序员最爱的UTF-8 without BOM,就像:</p><pre class="brush:php;toolbar:false"> E9 94 9F  E6 96 A4  E6 8B B7  0D   0A   61   0D   0A
 --------  --------  --------  --   --   --   --   --
U+ 951F      65A4      62F7   000D 000A 0061 000D 000A <p>Simple and clean.</p><blockquote><p><strong>注解</strong><br><code>[注A]</code> 对于一个双(多)字节的数,一定会按8位截断为1字节后写盘。那么写盘时先写最低8位还是先写最高8位,就是所谓的“字节序”(Endian)问题。例如,数<code>0x01020304</code>写盘时,是先写最低8位的<code>04 03 02 01</code>,还是先写最高8位的<code>01 02 03 04</code>?<br>
  先写低8位的叫做小端在先(little-endian),先写高8位的叫做大端在先(big-endian)。实际采用何种字节序受系统环境、标准规范和软件实际编写的多方面控制,不一概而论。<br><code>[注B]</code> 字节序如果我没弄错,是GB2312采用的EUC字符编码方法控制的。<br><code>[注C]</code> 本文并不严格区分<strong>UTF-16</strong>与<strong>UCS-2</strong>。<br><code>[注D]</code> Unicode的最大值实际上达到了U+10FFFF,超出了两个字节能够存储的限度。<br>
  但Unicode由于历史原因,留下了U+D800~U+DFFF这一段永久保留不用的空缺区域。<br>
  因此对U+10000及以上的字符,UTF-16借助了这部分空缺区域,对这些编码超大的字符打破2字节16位的惯例,特别的用4字节32位去表示之。<br>
  这一部分编码值太大的字符,超出了GBK的字符集范围,因此本文将<strong>完全忽略</strong>。如有机会再进一步测试</p></blockquote>
ログイン後にコピー


以上がWindows メモ帳のオプションの文字エンコーディングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 7にMySQLをインストールできますか? Windows 7にMySQLをインストールできますか? Apr 08, 2025 pm 03:21 PM

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

PSの負荷速度をスピードアップする方法は? PSの負荷速度をスピードアップする方法は? Apr 06, 2025 pm 06:27 PM

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。

MySQLを解く方法は、ローカルホストに接続できません MySQLを解く方法は、ローカルホストに接続できません Apr 08, 2025 pm 02:24 PM

MySQL接続は、次の理由が原因である可能性があります。MySQLサービスは開始されず、ファイアウォールは接続をインターセプトし、ポート番号が間違っています。ユーザー名またはパスワードが間違っています。My.cnfのリスニングアドレスは不適切に構成されています。トラブルシューティング手順には以下が含まれます。 2.ファイアウォール設定を調整して、MySQLがポート3306をリッスンできるようにします。 3.ポート番号が実際のポート番号と一致していることを確認します。 4.ユーザー名とパスワードが正しいかどうかを確認します。 5. my.cnfのバインドアドレス設定が正しいことを確認してください。

特定のシステムバージョンでMySQLが報告したエラーのソリューション 特定のシステムバージョンでMySQLが報告したエラーのソリューション Apr 08, 2025 am 11:54 AM

MySQLのインストールエラーのソリューションは次のとおりです。1。システム環境を慎重に確認して、MySQL依存関係ライブラリの要件が満たされていることを確認します。異なるオペレーティングシステムとバージョンの要件は異なります。 2.エラーメッセージを慎重に読み取り、依存関係のインストールやSUDOコマンドの使用など、プロンプト(ライブラリファイルの欠落やアクセス許可など)に従って対応する測定値を取得します。 3.必要に応じて、ソースコードをインストールし、コンパイルログを慎重に確認してみてください。これには、一定量のLinuxの知識と経験が必要です。最終的に問題を解決する鍵は、システム環境とエラー情報を慎重に確認し、公式の文書を参照することです。

ターミナルからMySQLにアクセスできません ターミナルからMySQLにアクセスできません Apr 08, 2025 pm 04:57 PM

端末からmysqlにアクセスできない場合は、次の理由があります。MySQLサービスが実行されていません。接続コマンドエラー;許可が不十分です。ファイアウォールは接続をブロックします。 mysql構成ファイルエラー。

PSの垂直参照線を引く方法 PSの垂直参照線を引く方法 Apr 06, 2025 pm 08:18 PM

Photoshopで垂直ガイドを引く:ルーラービューを有効にします(ビュー&gt;ルーラー)。マウスをルーラーの垂直エッジの上にホバリングし、次にカーソルが二重矢印を備えた垂直線になり、マウスを保持してドラッグして基準線を引き出します。ガイドをドラッグして[削除]をクリックするか、クロスにホバリングします。

MySQLはダウンロード後にインストールできません MySQLはダウンロード後にインストールできません Apr 08, 2025 am 11:24 AM

MySQLのインストール障害の主な理由は次のとおりです。1。許可の問題、管理者として実行するか、SUDOコマンドを使用する必要があります。 2。依存関係が欠落しており、関連する開発パッケージをインストールする必要があります。 3.ポート競合では、ポート3306を占めるプログラムを閉じるか、構成ファイルを変更する必要があります。 4.インストールパッケージが破損しているため、整合性をダウンロードして検証する必要があります。 5.環境変数は誤って構成されており、環境変数はオペレーティングシステムに従って正しく構成する必要があります。これらの問題を解決し、各ステップを慎重に確認して、MySQLを正常にインストールします。

PSの遅いロードは、実行中の他のプログラムに関連していますか? PSの遅いロードは、実行中の他のプログラムに関連していますか? Apr 06, 2025 pm 06:03 PM

オフィスソフトウェアのマスターの秘密には、さまざまなバージョンとプラットフォームの理解、ソフトウェアインターフェイスの使用、機能操作の詳細な理解、アプリケーションのコラボレーションと共有機能、テンプレートとスタイルの利用、高度なスキルの習得、一般的な問題の解決が含まれます。さらに、ニーズに合ったバージョンを選択し、テンプレートとスタイルを適切に使用し、バックアップ習慣を開発し、効率を向上させるためのショートカットキーと高度なテクニックを学ぶ必要があります。

See all articles