web-dev-qa-db-ja.com

Windows 7でUTF8をデフォルトの文字エンコーディングとして設定する

標準としてUTF-8をグローバルに使用するようにWindows 7を設定する方法はありますか?
すべてのテキストエディタでそれを使うように設定するのは本当に面倒です。

61
Baarn

簡単な答えはいいえ、それは不可能です

詳しく言うと、Windows 7には、1)グローバルデフォルトを設定する2)一覧表示されたすべてのアプリケーションが従うことを可能にするグローバルエンコーディングオプションが見つからないと思います。

また、ここであなたが解決しようとしている問題は何ですか?

データを表すために内部でUnicodeを使用するかどうかを選択するのはアプリケーションの責任です。 Unicodeの使用をお勧めします 、しかし、あなたはすべてのアプリケーションが実際にそれを内部的にサポートしていることを確信できないかもしれません。

あなたができること、しかしリストされた各アプリケーションのデフォルトの文字エンコーディングを変更すること:

  • Eclipseでは、新しいファイルのデフォルトエンコーディングはWindows>設定>一般>コンテンツタイプから設定できます( Eclipse Community Formsへの投稿 を参照)。
  • Notepad ++の場合は、設定>設定>新規文書/デフォルト/ディレクトリの順に進み、エンコードをUTF-8に設定します。
  • Thunderbirdに関しては、私はそれがすでにデフォルトのエンコーディングとしてUTF-8を使用していると確信していますか? ( を参照してください文字エンコーディングに関するこれらの注意事項
  • OpenOffice(およびLibreOffice)の場合、OpenOfficeによって保存された文書はXMLに基づいているため、実際にはエンコーディングを気にする必要さえありません。エンコーディングはXMLファイルの内部で指定されます(and UTF-8はすでにデフォルトです)
  • UTF-8の観点からすると、PowerShellは注意が必要です。デフォルトのエンコーディングはUTF-16LEです。
45
jsalonen

UTF-8用のANSIコードページ コードページ65001 があるにもかかわらず、WindowsがシステムANSIコードページとしてUTF-8を許可しないため、これは主に不可能です。これにはいくつかの理由があるようです。

  • ユニコードが新しくなったとき、マイクロソフトはUCS-2がユニコードをサポートする最善の方法であると決心しました。当時のUnicodeは16ビットでした。
  • Windowsでは、サポートされている言語ごとに1つのANSIコードページ があります。これは、言語とエンコーディングを個別に設定できるUnixおよびLinuxとは異なります。
  • コードページ65001はどこでも機能しません。具体的には、マルチバイト文字が1または2バイトを必要とするのに対し、UTF-8は1から4バイトを必要とするというWindowsのMultiByteサポートの一部では壊れています。たとえば、 WriteFile() API は、コードページ65001の下で誤った結果を返します。これは、 write() のように、それに依存するすべてのライブラリコードに発生します。

Microsoftで国際化を担当した故Michael Kaplanは "Sorting it all Out" のブログに関連トピックのいくつかの投稿を載せていました。私はその日のうちにこれらの懸念のいくつかについて彼に直接メールしました。

20
hippietrail