Une lettre de l'alphabet avec une distinction de prononciation, comme le tréma utilisé en allemand, s'affiche sous forme de deux lettres déformées. Par exemple, le nom de lieu Kärnten devient Kärnten.
La plupart des autres alphabets ne sont pas déformés, il est donc difficile de le remarquer (en fait, si vous recherchez sur Google avec "Kärnten", vous verrez beaucoup de sites déformés).
Cette fois, j'ai eu ce problème lors de la lecture et de l'écriture des métadonnées exif d'une image en Java.
utf-8
La chaîne de caractères enregistrée sousiso-8859-1
Parce qu'il a été lu comme.
Voici un exemple d'exécution avec Java REPL.
python
java> String s = new String("Kärnten")
java> byte[] iso = s.getBytes("ISO-8859-1")
byte[] iso = [75, -28, 114, 110, 116, 101, 110]
java> byte[] utf8 = s.getBytes("UTF-8")
byte[] utf8 = [75, -61, -92, 114, 110, 116, 101, 110]
Ainsi, "ä" est représenté par 1 octet (`-28```) dans ISO-8859-1 et 2 octets (`
-61, -92) dans UTF-8. À. Si vous enregistrez une chaîne d'octets en UTF-8 puis la lisez comme ISO-8859-1, `` `` -61
est interprété comme "Ã" et
-92``` est interprété comme "¤". Alors
python
java> new String(utf8, "ISO-8859-1")
Kärnten
Cela se transforme en quelque chose comme ça.
Il en va de même pour les autres distinctions de prononciation. Exemple:
De toute évidence, spécifiez le code de caractère correct pour la lecture et l'écriture.
python
java> new String(utf8, "ISO-8859-1");
Kärnten
java> new String(iso, "ISO-8859-1");
Kärnten
https://forum.httrack.com/readmsg/18923/indexhtml