Quelle est la différence entre encoding et charset?

je suis confus au sujet de l'encodage du texte et du jeu de caractères. Pour de nombreuses raisons, je apprendre des choses non-Unicode, non-UTF8 dans mon travail à venir.

je trouve le mot "charset" dans les en-têtes de messagerie comme dans "ISO-2022-JP", mais il n'y a pas un tel codage dans les éditeurs de texte. (J'ai regardé autour des différents éditeurs de texte.)

Quelle est la différence entre le codage de texte et le jeu de caractères? Je l'apprécie si vous pouviez me montrer des exemples de cas d'utilisation.

123
demandé sur TK. 2010-02-17 17:55:24

10 réponses

en gros:

  1. charset est l'ensemble de caractères que vous pouvez utiliser
  2. l'encodage est la façon dont ces caractères sont stockés dans la mémoire
113
répondu Svetlozar Angelov 2010-02-17 15:01:30

chaque encodage a un jeu de caractères particulier qui lui est associé, mais il peut y avoir plus d'un encodage pour un jeu de caractères donné. Un charset est simplement ce qu'il ressemble, un ensemble de caractères. Il existe un grand nombre de jeux de caractères, y compris de nombreux qui sont destinés à des scripts ou des langues particulières.

Cependant, nous sommes bien avancés dans la transition vers Unicode, qui inclut un jeu de caractères capable de représenter presque tous les scripts du monde. Cependant, il y a plusieurs encodages pour Unicode. Un encodage est une façon de mapper une chaîne de caractères sur une chaîne d'octets. Des exemples D'encodages Unicodes incluent UTF-8 , UTF-16 BE , et UTF-16 LE . Chacun d'eux présente des avantages pour des applications ou des architectures de machines particulières.

72
répondu Matthew Flaschen 2011-06-21 13:14:18

outre les autres réponses, je pense que cet article est une bonne lecture http://www.joelonsoftware.com/articles/Unicode.html

l'article est intitulé " le Minimum absolu chaque développeur de logiciel doit absolument, positivement connaître Unicode et les jeux de caractères (pas D'Excuses!) " écrit par Joel Spolsky . L'essai a plus de 10 ans mais (malheureusement) le contenu est encore valide...

42
répondu mattanja 2014-10-31 15:22:42

un codage de caractères se compose de:"

  1. L'ensemble des caractères pris en charge
  2. Une correspondance entre les caractères et les nombres entiers ("points de code")
  3. comment les points de code sont encodés comme une série d '" unités de code "(par exemple, unités de 16 bits pour UTF-16)
  4. comment les unités de code sont encodées en octets (par exemple, big-endian ou little-endian)

L'Étape #1 en elle-même est un "caractère répertoire" ou en abrégé "jeu de caractères", et #1 + #2 = un "jeu de caractères codés".

mais avant Qu'Unicode ne devienne populaire et que tout le monde (sauf les Asiatiques de L'est) utilise un encodage à un seul octet, les étapes #3 et #4 étaient triviales (code point = Unité de code = octet). Ainsi, les protocoles plus anciens ne distinguaient pas clairement entre "codage de caractères" et "jeu de caractères codés". Les protocoles plus anciens utilisent charset quand ils signifient vraiment encodage.

24
répondu dan04 2010-06-23 05:29:50

jeter plus de lumière pour les gens qui visitent désormais, espérons qu'il serait utile.


Jeu De Caractères

il y a des caractères dans chaque langue et la collection de ces caractères forme le" jeu de caractères " de cette langue. Lorsqu'un caractère est encodé, il lui attribue un identifiant unique ou un numéro appelé point de code. En informatique, ces points de code seront représenté par un ou plusieurs octets.

des Exemples de jeu de caractères: ASCII (couvre tous les caractères en anglais), ISO/IEC 646, Unicode (couvre les caractères de toutes les langues vivantes dans le monde)

Jeu De Caractères Codés

Un jeu de caractères codés est un jeu dans lequel un numéro unique est attribué à chaque personnage. Ce numéro unique est appelé "code point".

Jeux de caractères codés sont parfois appelé pages de code.

Encodage

L'encodage

est le mécanisme qui permet de cartographier les points de code avec quelques octets afin qu'un caractère puisse être lu et écrit uniformément dans un système différent en utilisant le même schéma d'encodage.

exemples d'encodage: ASCII, Unicode encoding schemes like UTF-8, UTF-16, UTF-32.

Élaboration de plus de 3 concepts

  • - "de Caractère क' en Devanagari jeu de caractères a une virgule point de code de 2325 qui sera représenté par deux octets (09 15) lors de l'utilisation de la UTF-16
  • dans "ISO-8859-1" Schéma d'encodage "ü" (ce n'est rien d'autre qu'un caractère dans le jeu de caractères latins) est représenté comme valeur hexa-décimale de " FC "tandis que dans " UTF-8" Il représenté comme "C3 BC" et dans UTF-16 comme " FE FF 00 FC".
  • différents schémas d'encodage peuvent utiliser le même point de code pour représenter des caractères différents, par exemple dans" ISO-8859-1 "(aussi appelé Latin1) la valeur du point de code décimal pour la lettre " é " est de 233. Toutefois, dans la norme ISO 8859-5, le même point de code représente le caractère Cyrillique "փ".
  • d'autre part, un point de code unique dans le jeu de caractères Unicode peut en fait être mappé à différentes séquences d'octets, en fonction du codage qui a été utilisé pour le document. Le caractère Devanagari, avec le point de code 2325 (qui est 915 En notation hexadécimale), sera représenté par deux octets lorsqu'on utilise L'encodage UTF-16 (09 15), trois octets avec UTF-8 (E0 A4 95), ou quatre octets avec UTF-32 (00 00 09 15)
13
répondu hagrawal 2015-10-08 23:47:45

un jeu de caractères, ou répertoire de caractères, est simplement un ensemble (une collection non ordonnée) de caractères. Un jeu de caractères codés attribue un entier (un "point de code") à chaque caractère du répertoire. Un encodage est une façon de représenter des points de code sans ambiguïté comme un flux d'octets.

8
répondu Jonathan Feinberg 2010-02-17 15:01:25

googlé pour ça. http://en.wikipedia.org/wiki/Character_encoding

La différence semble être subtile. Le terme charset ne s'applique pas à Unicode. Unicode passe par une série d'abstractions. résumé caractères - > points de code - > encodage des points de code en octets.

les Charsets sautent en fait ceci et sautent directement des caractères aux octets. séquence d'octets <-> séquence de caractères

en bref, encodage: points de code - > octets jeu de caractères: caractères - > octets

6
répondu Fakrudeen 2010-02-17 15:15:59

un jeu de caractères n'est qu'un ensemble; il contient, par exemple, le signe Euro, ou il ne contient pas. C'est tout.

Un codage est une bijection d'un jeu de caractères à un ensemble d'entiers. S'il supporte le signe Euro, il doit assigner un entier spécifique à ce caractère et à aucun autre.

5
répondu Kilian Foth 2010-02-17 15:03:56

à mon avis, le mot" charset " devrait se limiter à identifier le paramètre utilisé dans les normes HTTP, MIME, et similaires pour spécifier un codage de caractères (un mappage d'une série de caractères textuels à une séquence d'octets) par nom. Par exemple: charset=utf-8 .

Je suis conscient, cependant, que MySQL, Java, et d'autres endroits peuvent utiliser le mot" charset " pour signifier un codage de caractère.

1
répondu Peter O. 2016-01-10 20:54:42

un encodage est un mappage entre des octets et des caractères à partir d'un jeu de caractères, il sera donc utile de discuter et de comprendre la différence entre octets et caractères .

pense aux octets comme des nombres entre 0 et 255, alors que les caractères sont des choses abstraites comme "a", "1", "$" et "Ä". L'ensemble de tous les caractères disponibles est appelé un jeu de caractères .

chaque caractère a une séquence d'un ou plusieurs octets qui sont utilisés pour le représenter; cependant, le nombre exact et la valeur des octets dépendent du encodage utilisé et il ya beaucoup d'encodages différents.

la plupart des encodages sont basés sur un ancien jeu de caractères et d'encodage appelé ASCII qui est un octet simple par caractère (en fait, seulement 7 bits) et contient 128 caractères, y compris une grande partie des caractères communs utilisés en anglais américain.

par exemple, voici 6 caractères dans le jeu de caractères ASCII qui sont représentés par les valeurs 60 à 65.

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      ?       ║
║  64  ║      @       ║
║  65  ║      A       ║
╚══════╩══════════════╝

dans l'ensemble ASCII complet, la valeur la plus basse utilisée est zéro et la plus élevée est 127 (les deux sont des caractères de contrôle cachés).

cependant, une fois que vous commencez à avoir besoin de plus de caractères que L'ASCII de base fournit (par exemple, des lettres avec des accents, des symboles de devise, des symboles graphiques, etc.), ASCII n'est pas adapté et vous avez besoin de quelque chose de plus vaste. Vous avez besoin de plus de caractères (un jeu de caractères différent) et vous avez besoin d'un encodage différent car 128 caractères n'est pas suffisant pour s'adapter à tous les caractères. Certains codages offre un octet (256 caractères) ou jusqu'à six octets.

au fil du temps, beaucoup d'encodages ont été créés. Dans le monde Windows, il y a CP1252, ou ISO-8859-1, alors que les utilisateurs Linux ont tendance à préférer UTF-8. Java utilise UTF-16 nativement.

One la séquence des valeurs des octets pour un caractère dans un encodage peut représenter un caractère complètement différent dans un autre encodage, ou peut même être invalide.

par exemple, dans ISO 8859-1 , â est représenté par un octet de valeur 226 , tandis que dans UTF-8 il est de deux octets: 195, 162 . Cependant, dans ISO 8859-1 , 195, 162 serait deux caractères, Ã, ¢ .

lorsque les ordinateurs stockent des données sur les caractères en interne ou les transmettent à un autre système, ils stockent ou envoient des octets. Imaginez un système qui ouvre un fichier ou qui reçoit un message voit les octets 195, 162 . Comment sait-il Quels sont ces personnages?

pour que le système interprète ces octets comme des caractères réels (et donc les affiche ou les convertisse en un autre encodage), il doit connaître l'encodage utilisé. C'est pourquoi l'encodage apparaît dans les en-têtes XML ou peut être spécifié dans un éditeur de texte. Il indique au système le mappage entre les octets et les caractères.

0
répondu rghome 2018-04-24 13:18:15