LinuxでASCIIファイルをANSIに変換してみてください。
$ file -bi relocate.xml
text/xml; charset=us-ascii
$ iconv -f us-ascii -t ms-ansi < relocate.xml | file -bi -
text/xml; charset=us-ascii
$ cat relocate.xml | recode us-ascii..ms-ansi | file -bi -
Request: ANSI_X3.4-1968..:libiconv:..CP1252
Shrunk to: ANSI_X3.4-1968..CP1252
text/xml; charset=us-ascii
また、エンコーディングを推論するために別のツールを試してみましたが、すべて同じ結果を返しました。
$ enca -L none relocate.xml ; echo "###" ; uchardet relocate.xml ; echo "###" ; encguess relocate.xml
7bit ASCII characters
CRLF line terminators
###
ASCII
###
relocate.xml US-ASCII
iconv
ご覧のとおり、ツールやツールのエラーメッセージはありませんが、recode
最終的なエンコーディングはまだありませんus-ascii
。
ANSIにどのように変換しますか?
答え1
変換中のエンコーディング(ms-ansi = windows-1252)が変換中のエンコーディング(ascii)の親セットである場合は、明らかに何もしないiconv
ため、そのまま残ります。
さらに、ファイルの「文字セット」は一種の必須メタデータではなく、file
ユーティリティは推測する約20%の確率で失敗する信頼できない経験的方法を使用することが可能です。
例:
$ printf '%s\n' '<?xml version="1.0" encoding="UTF-8"?>' '<a>' '<b>'{0..100000}'</b>' '<c>