Table des matières
Avertissement
Remarque
Cas de test
ANSI
Série Unicode
UTF-16 et BOM
« Unicode » et « Unicode big endian » du Bloc-notes
UTF-8
番外:Notepad++的字符编码测试
Maison outils de développement bloc-notes Codage de caractères facultatif dans le Bloc-notes Windows

Codage de caractères facultatif dans le Bloc-notes Windows

Feb 05, 2021 pm 03:42 PM
unicode windows 记事本

La colonne tutorielle suivante du bloc-notes vous présentera le codage de caractères facultatif dans le Bloc-notes Windows. J'espère qu'il sera utile aux amis dans le besoin !

Codage de caractères facultatif dans le Bloc-notes Windows

Une brève analyse des encodages de caractères facultatifs dans le Bloc-notes Windows

@lizheming dans le groupe interrogé sur le Bloc-notes Windows (Bloc-notes) Que signifient les options d'encodage pour enregistrer les fichiers...

Cet article testera simplement le comportement du Bloc-notes Windows.

Codage de caractères facultatif dans le Bloc-notes Windows

▲ L'encodage du Bloc-notes Windows inclut ANSI, Unicode, Unicode big endian et UTF-8.

Avertissement

Cet article explique uniquement les faits techniques d'un logiciel largement utilisé et ne signifie pas que l'auteur soutient ou s'oppose à l'utilisation du logiciel.
En fait, l'auteur recommande de ne jamais utiliser le Bloc-notes Windows pour travailler avec du code de programme informatique.
Cet article n'est vérifié que sur une certaine instance de la version chinoise simplifiée de Windows 7 64 bits et est uniquement à titre de référence. Il n'y a aucune garantie que des résultats cohérents puissent être reproduits sur d'autres systèmes identiques ou différents.

Remarque

Cet article fait une distinction stricte entre le codage d'Unicode et la sérialisation d'octets.
Le codage d'Unicode fait simplement référence au travail d'utilisation de nombres (généralement écrits sous forme de nombres hexadécimaux) pour représenter les caractères un à un. La portée de ce numéro n'est limitée que par la norme Unicode et n'a rien à voir avec les ordinateurs. La
La sérialisation d'octets d'Unicode fait référence au travail de représentation d'un nombre dans la plage standard Unicode en N octets afin de pouvoir être écrit dans la mémoire de l'ordinateur.

Cas de test

Le cas de test est : "锟斤拷[line break]a[line break]". (锟斤拷 est une croyance.)

Les encodages GBK et Unicode de tous les caractères sont :

  • 锟GBK=EFBF Unicode=U+951F
  • GBK=BDEF Unicode=U+65A4
  • GBK=BFBD Unicode=U+62F7

Les encodages GBK et Unicode des caractères ASCII suivants sont cohérents avec ASCII :

a=0x61 CR=0x0D LF=0x0A
(Un caractère de nouvelle ligne dans Windows occupe deux caractères : CR+LF)

ANSI

Dans le système chinois simplifié, ANSI est le codage GBK défini par la norme nationale de la République populaire. de Chine.

Le résultat de l'utilisation du Bloc-notes Windows par ANSI pour stocker ce fichier est le suivant :

EF BF  BD EF  BF BD  0D  0A  61  0D  0A
-----  -----  -----  --  --  --  --  --
Copier après la connexion

Utilisez simplement l'encodage GBK pour stocker tous les caractères. Un simple octet dont le bit le plus élevé n'est pas 1 et équivalent à ASCII, sinon un double octet.

Faites attention au problème de l'ordre des octets (Endian) ici[注A]. Vous pouvez voir que l'ordre des octets ici est big-endian (big-endian) .

Mais il n'est pas nécessaire d'insister sur "big endian first GBK" - car à partir de GB2312, la norme stipule que la méthode de stockage est big endian first [注B]. Le GBK ultérieur est rétrocompatible avec le GB18030-2000.

Le problème avec ANSI est que cela dépend du système - l'ANSI des autres systèmes linguistiques n'est pas GBK, et les fichiers ouverts en GBK seront inévitablement tronqués. Et le jeu de caractères de GBK lui-même est trop petit.
(Ne dites jamais "Je n'utilise que le chinois" - sans les symboles Unicode, les emojis sur Internet ne peuvent pas être tapés)

Série Unicode

Ce que le Bloc-notes Windows a dit "Unicode", "Unicode big endian" et UTF-8 sont tous des méthodes de stockage de sérialisation d'octets différentes du même codageUnicode.

UTF-16 et BOM

Unicode fait ici référence à UTF-16[注C]. UTF-16 est une méthode de sérialisation extrêmement simple et grossière - la plupart des caractères Unicode sont compris entre U+0000~U+FFFF [注D], puis utilisez deux octets pour chaque caractère pour encoder Unicode. La valeur d'origine est écrite sur le disque.

Notez que les caractères ASCII doivent également gaspiller deux fois plus d'espace pour stocker les 8 bits supérieurs de 0x00 - car si les 8 bits supérieurs de 0 sont omis, il n'y aura aucune autre base de césure lors de l'analyse.

Pour UTF-16, il existe un problème de gros-boutiste et de petit-boutiste - UTF-16 ne précise pas si l'octet est en premier gros-boutiste ou petit-boutiste. Cependant, UTF-16 ne contient pas d'informations indiquant l'ordre des octets, vous ne pouvez donc pas vérifier manuellement quelle analyse n'est pas tronquée... La solution fournie par

Unicode est de convertir un de largeur nulle ininterrompu Une fois le caractère espace (U+FEFF ZERO WIDTH NO-BREAK SPACE) est sérialisé en UTF-16, il est placé au début du fichier. De cette façon, l'analyseur UTF-16 lit les deux premiers octets du fichier. Si c'est FE FF, cela signifie la grande fin en premier, et FF FE signifie la petite fin en premier.

Cette chose insérée s'appelle BOM (Byte Order Mark, byte order mark).

Il convient de mentionner que le caractère d'espace sans césure de largeur nulle est également souvent utilisé comme caractère valide pour dépasser la limite de mots dans diverses situations. Comprend les questions et réponses et les commentaires de SegmentFault.

« Unicode » et « Unicode big endian » du Bloc-notes

L'écriture de « Unicode » à elle seule n'est pas du tout une expression complète d'une méthode de stockage. Parce que cela ne contient que du codage et non de la sérialisation d'octets.

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>
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Puis-je installer mysql sur Windows 7 Puis-je installer mysql sur Windows 7 Apr 08, 2025 pm 03:21 PM

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

Comment accélérer la vitesse de chargement de PS? Comment accélérer la vitesse de chargement de PS? Apr 06, 2025 pm 06:27 PM

La résolution du problème du démarrage lent Photoshop nécessite une approche à plusieurs volets, notamment: la mise à niveau du matériel (mémoire, lecteur à semi-conducteurs, CPU); des plug-ins désinstallés ou incompatibles; nettoyer régulièrement les déchets du système et des programmes de fond excessifs; clôture des programmes non pertinents avec prudence; Éviter d'ouvrir un grand nombre de fichiers pendant le démarrage.

Comment résoudre MySQL ne peut pas se connecter à l'hôte local Comment résoudre MySQL ne peut pas se connecter à l'hôte local Apr 08, 2025 pm 02:24 PM

La connexion MySQL peut être due aux raisons suivantes: le service MySQL n'est pas démarré, le pare-feu intercepte la connexion, le numéro de port est incorrect, le nom d'utilisateur ou le mot de passe est incorrect, l'adresse d'écoute dans my.cnf est mal configurée, etc. 2. Ajustez les paramètres du pare-feu pour permettre à MySQL d'écouter le port 3306; 3. Confirmez que le numéro de port est cohérent avec le numéro de port réel; 4. Vérifiez si le nom d'utilisateur et le mot de passe sont corrects; 5. Assurez-vous que les paramètres d'adresse de liaison dans My.cnf sont corrects.

Solutions aux erreurs rapportées par MySQL sur une version système spécifique Solutions aux erreurs rapportées par MySQL sur une version système spécifique Apr 08, 2025 am 11:54 AM

La solution à l'erreur d'installation de MySQL est: 1. Vérifiez soigneusement l'environnement système pour vous assurer que les exigences de la bibliothèque de dépendance MySQL sont satisfaites. Différents systèmes d'exploitation et exigences de version sont différents; 2. Lisez soigneusement le message d'erreur et prenez des mesures correspondantes en fonction des invites (telles que les fichiers de bibliothèque manquants ou les autorisations insuffisantes), telles que l'installation de dépendances ou l'utilisation de commandes sudo; 3. Si nécessaire, essayez d'installer le code source et vérifiez soigneusement le journal de compilation, mais cela nécessite une certaine quantité de connaissances et d'expérience Linux. La clé pour finalement résoudre le problème est de vérifier soigneusement l'environnement du système et les informations d'erreur et de se référer aux documents officiels.

Impossible d'accéder à MySQL depuis Terminal Impossible d'accéder à MySQL depuis Terminal Apr 08, 2025 pm 04:57 PM

Impossible d'accéder à MySQL à partir du terminal peut être dû à: le service MySQL n'est pas en cours d'exécution; Erreur de commande de connexion; autorisations insuffisantes; Connexion de blocs de pare-feu; Erreur de fichier de configuration MySQL.

Comment tirer la ligne de référence verticale de PS Comment tirer la ligne de référence verticale de PS Apr 06, 2025 pm 08:18 PM

Tirez les guides verticaux dans Photoshop: Activer la vue du règlement (View & gt; souverain). Volez la souris sur le bord vertical de la règle, puis le curseur devient une ligne verticale avec des flèches doubles et maintenez et faites glisser la souris pour retirer la ligne de référence. Cliquez sur Supprimer en faisant glisser le guide ou en le plantant dans une croix.

MySQL ne peut pas être installé après le téléchargement MySQL ne peut pas être installé après le téléchargement Apr 08, 2025 am 11:24 AM

Les principales raisons de la défaillance de l'installation de MySQL sont les suivantes: 1. Problèmes d'autorisation, vous devez s'exécuter en tant qu'administrateur ou utiliser la commande sudo; 2. Des dépendances sont manquantes et vous devez installer des packages de développement pertinents; 3. Conflits du port, vous devez fermer le programme qui occupe le port 3306 ou modifier le fichier de configuration; 4. Le package d'installation est corrompu, vous devez télécharger et vérifier l'intégrité; 5. La variable d'environnement est mal configurée et les variables d'environnement doivent être correctement configurées en fonction du système d'exploitation. Résolvez ces problèmes et vérifiez soigneusement chaque étape pour installer avec succès MySQL.

Le chargement lent PS est-il lié aux autres programmes qui s'exécutent? Le chargement lent PS est-il lié aux autres programmes qui s'exécutent? Apr 06, 2025 pm 06:03 PM

Les secrets de la maîtrise des logiciels Office comprennent: la compréhension des différentes versions et plates-formes, l'installation et la configuration correctes, compétents dans l'utilisation de l'interface logicielle, la compréhension approfondie des opérations de fonctionnalités, la collaboration et les fonctions de partage des applications, l'utilisation de modèles et de styles, de maîtrise des compétences avancées et de résolution de problèmes communs. De plus, vous devez choisir une version qui convient à vos besoins, à faire bon usage des modèles et des styles, de développer des habitudes de sauvegarde et d'apprendre des clés de raccourci et des techniques avancées pour améliorer l'efficacité.

See all articles