ASCIIからANSIへの変換は機能しません。

ASCIIからANSIへの変換は機能しません。

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>

関連情報