J'essaie d'identifier un personnage étrange que j'ai trouvé dans un fichier avec lequel je travaille:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
Le fichier utilise le codage ISO-8859 et ne peut pas être converti en UTF-8:
$ iconv -f ISO-8859 -t UTF-8 file
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.
$ iconv -t UTF-8 file
iconv: illegal input sequence at position 0
$ file file
file: ISO-8859 text
Ma principale question est de savoir comment puis-je interpréter la sortie d' od
ici? J'essaie d'utiliser cette page qui me permet de traduire entre différentes représentations de caractères, mais elle me dit qu'en 005353
tant que "point de code hexadécimal" 卓
ce qui ne semble pas correct et en 0aeb
tant que "point de code hexadécimal" est ૫
ce qui, encore une fois, semble incorrect .
Alors, comment puis-je utiliser l'une des trois options ( 355
, 005353
ou 0aeb
) pour savoir quel personnage ils sont censés représenter?
Et oui, j'ai essayé avec les outils Unicode mais il ne semble pas non plus être un caractère UTF valide:
$ uniprops $(cat file)
U+FFFD ‹�› \N{REPLACEMENT CHARACTER}
\pS \p{So}
All Any Assigned Common Zyyy So S Gr_Base Grapheme_Base Graph X_POSIX_Graph
GrBase Other_Symbol Print X_POSIX_Print Symbol Specials Unicode
si je comprends la description du caractère Unicode U + FFFD, ce n'est pas du tout un vrai caractère mais un espace réservé pour un caractère corrompu. Ce qui est logique puisque le fichier n'est pas réellement encodé en UTF-8.
ë
c'est ce que je vois quand les données sont utilisées sur un autre programme! Mais comment puis-je le savoir? N'est-ce pas quelque part dans les données que je fournis? Comment avez-vous trouvé? Oh, j'avais essayé iconv
avec -f ISO-8859
mais il se plaignait de l' conversion from
ISO-8859 «n'est pas pris en charge».
eb
et ignorer l' 0x
indicateur hexadécimal ou quoi que ce soit. Mon ignorance de ce genre de chose est profonde. Pourriez-vous poster une réponse expliquant que @StephenKitt?
iconv
auriez réussi; et / ou vous auriez pu le rechercher par exemple sur Wikipédia. Pour cet encodage très spécifique, fileformat.info/info/unicode/char/00eb/index.htm fonctionne également (Unicode est équivalent à ISO-8859-1 dans la gamme 128-255, bien que bien sûr aucun encodage UTF ne soit compatible avec lui ).
iconv
plaint parce que vous n'avez pas spécifié le jeu de caractères source, il utilise donc votre valeur par défaut qui est probablement UTF-8.)