これについてGoogle検索を行うことを誰かが勧める前に、私は持っています。コードページとエンコーディングについてもう少し明確にする必要があります。
UTF8 エンコーディングを使用し、イタリア語のコード ページを使用してからフランス語のコード ページを使用すると、バイトが変更されていなくても、異なる文字が取得されるということですか?
Joel はこれについて素晴らしい要約をしています:
http://www.joelonsoftware.com/articles/Unicode.html
いいえ。あなたの質問を正しく理解していれば、それは意味しません。UTF-8 を特定のコード ページに変換する場合、一部の文字のみが変換される可能性があります。変換されなかったものに何が起こるかは、変換の呼び出し方法によって異なります。考えられる結果は、コード ページにマップできなかった文字が疑問符文字に変換されることです。
エンコーディングは、数値と「文字」の間の単純なマッピングです。
US-ASCII は、数値 65 を文字 A に、32 をスペースに、49 を数字の「1」にマップします。(これらがどのようにレンダリングされるかは別の問題です。) 実際、UTF-8 は同じことを行います! しかし、UTF-8 が ASCII とは異なる扱いをする他の値があります。これは可変長エンコーディングです。つまり、文字は 1、2、3、または 4 バイトでエンコードできます。一般的な文字は、通常、消費するバイト数が少なくなります。
Web ページを含むプレーン テキスト ファイルは、バイト シーケンスとして保存および送信されます。これらのバイトは、テキストを表すと想定されています。ソフトウェア アプリケーション (テキスト エディターや Web ブラウザーなど) は、これらのファイル内の情報を画面に表示する役割を果たします。通常、ライブラリや OS の機能を利用します。
ファイルを作成したソフトウェアとは異なるエンコーディングをソフトウェアが想定している場合、間違った文字が表示されることがあります。
異なるエンコーディング間で変換できることに注意してください。ただし、特定の文字を含まないエンコーディングに変換する場合、ソフトウェアは代わりに何を使用するかを選択する必要があります。多くの場合、この変換は透過的に行われます (特定のエンコーディングでファイルを保存する場合、入力したものはすべてそのエンコーディングに変更する必要があります)。
UTF-8 には、フランス語とイタリア語のコード ページのすべての文字が含まれていますが、言語固有のコード ページには、他のすべての文字が含まれているわけではありません。
そのため、各言語からの入力を取得して UTF-8 に変換して保存することはできますが、イタリア語の入力を取得してフランス語として表示すると、正しい文字が得られるとは限りません。
可能であれば、UTF-8 を使用してください。