Changer l'encodage du fichier txt


16

Quand j'écris:

file file1.txt 

J'ai cette sortie: texte Unicode UTF-16 Little-endian, avec terminateurs de ligne CR

Alors si j'écris:

file file2.txt 

J'ai: texte ASCII

file2.txt est créé en faisant:

echo $var > "file2.txt"

Je voudrais que file2.txt ait le même encodage que file1.txt. Comment puis je faire ça ?

Réponses:


25

Vous pouvez utiliser iconvpour convertir l'encodage du fichier:

iconv -f ascii -t utf16 file2.txt > another.txt

another.txt devrait alors avoir l'encodage souhaité.

Vous pouvez également essayer ceci:

echo $var | iconv -f ascii -t utf16 > "file2.txt"

7

Utilisez iconv:

echo "$var" | iconv --from-code=utf-8 --to-code=utf-16le --output=file2.txt

0

Lors de la conversion de votre fichier, vous devez vous assurer qu'il contient une marque d'ordre des octets. Même si la norme indique qu'une marque d'ordre d'octets n'est pas recommandée pour UTF-8 , il peut y avoir des confusions légitimes entre UTF-8 et ASCII sans marque d'ordre d'octets .

De plus, en spécifiant UTF-16BEou UTF-16LE sans ajouter une marque d'ordre d'octets , je convertis d'abord en UTF-16, qui utilise un endianness dépendant de la plate-forme. Ensuite, j'utilise filepour déterminer l'endianité réelle et la conversion de celle-ci en UTF-16LE.

Enfin, lorsque vous créez un fichier à l'aide bash, le fichier reçoit bashl' locale charmapencodage, c'est donc de cela que vous devez mapper.

(Je mets en majuscule tous mes encodages car lorsque vous listez tous iconvles encodages pris en charge avec, iconv -lils sont tous en majuscules.)

BASH_ENCODING="$( locale charmap | tr [:lower:] [:upper:] )"
echo $var | iconv -f "$BASH_ENCODING" -t UTF-16 > UTF-16-UNKNOWN-ENDIANNESS-FILE
FILE_ENCODING="$( file --brief --mime-encoding UTF-16-UNKNOWN-ENDIANNESS-FILE )"
iconv -f "$FILE_ENCODING" -t UTF-16LE UTF-16-UNKNOWN-ENDIANNESS-FILE > file2.txt

Si vous avez voté contre, expliquez-vous pourquoi?
Heath Borders
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.