il faut savoir qu'en UTF-8, un même caractère peut être représenté de plusieurs façons (« è » peut être
stocké comme un « è » ou comme un « e + ` »)
Tu as de la doc là-dessus ? Je ne dis pas que c'est faux, mais c'est si contraire au fonctionnement d'UTF-8 et a priori d'un intérêt si marginal que ça me désarçonne un peu.
En UTF-8, la séquence codant un caractère sur plusieurs octets indique via les bits à 1 (au minimum 2) démarrant le premier de ceux-ci combien d'octets elle occupe, chacun des autres octets commençant ensuite par un bit à 1 suivi d'un bit à 0. Ça permet de toujours pouvoir se situer dans une chaîne (si tu as un premier bit à 1, tu sais que tu es sur un caractère codé sur plusieurs octets, si le bit suivant est à 0, tu sais que c'est un octet intermédiaire et qu'il faut donc aller dans les octets précédents pour retrouver le premier et pouvoir reconstituer toute la séquence). Là, avec ce que tu décris, il faudrait avoir un octet spécial 111???? suivi par deux octets sur 7 bits 0???????, ça casse tout.
[^] # Re: Pas que Git
Posté par Ignatz Ledebur . En réponse à la dépêche Vulnérabilité dans Git et Mercurial sur certains systèmes de fichiers (FAT, NTFS, HFS+, etc.). Évalué à 1.
Tu as de la doc là-dessus ? Je ne dis pas que c'est faux, mais c'est si contraire au fonctionnement d'UTF-8 et a priori d'un intérêt si marginal que ça me désarçonne un peu.
En UTF-8, la séquence codant un caractère sur plusieurs octets indique via les bits à 1 (au minimum 2) démarrant le premier de ceux-ci combien d'octets elle occupe, chacun des autres octets commençant ensuite par un bit à 1 suivi d'un bit à 0. Ça permet de toujours pouvoir se situer dans une chaîne (si tu as un premier bit à 1, tu sais que tu es sur un caractère codé sur plusieurs octets, si le bit suivant est à 0, tu sais que c'est un octet intermédiaire et qu'il faut donc aller dans les octets précédents pour retrouver le premier et pouvoir reconstituer toute la séquence). Là, avec ce que tu décris, il faudrait avoir un octet spécial 111???? suivi par deux octets sur 7 bits 0???????, ça casse tout.