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 ?

Pierre
la source

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"
Der Hochstapler
la source
7

Utilisez iconv:

echo "$var" | iconv --from-code=utf-8 --to-code=utf-16le --output=file2.txt
Aluísio ASG
la source
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
Frontières de la santé
la source
Si vous avez voté contre, expliquez-vous pourquoi?
Heath Borders