web-dev-qa-db-ja.com

geditはUnicodeファイルを作成できますか?

blessを使用すると、gedit出力がASCIIであることがわかります。 geditは、ある種のUnicodeを処理できますか?

5
H2ONaCl

そこで、ブルーニに 彼らの答え のスクリーンショットを渡し、彼らが何を意味するのかを示しました。しかし、その後、結果をテストしました。実際、geditまたはその他のテキストエディターでUTF-8エンコーディングを選択できます。ただし、これらのファイルに非ASCII文字**が含まれていない限り、ASCIIとして検出されます。実際、何らかの方法で「プレーンテキスト」(疑わしい用語*)ファイルを作成した場合も同じことが言えます。 この答え には理由があります。

すべての文字が128未満の場合ASCIIとUTF-8は同じです。 ASCIIはUTF-8のサブセット(およびlatin1および他の多くのエンコード形式のサブセット)です。

私は誰にでもこの答えをテストするように挑戦します。すべての端末、すべてのテキストエディタ、およびlocaleがUTF-8に設定されている場合でも、非ASCII文字を追加することでシステムに「UTF-8」テキストファイルを作成できます。

$ echo unicorns > rainbows; file rainbows
rainbows: ASCII text

echoをリダイレクトすると、fileがASCIIと言うファイルを作成します(自分で試してください!)

$ echo ユニコーン >> rainbows; file rainbows
rainbows: UTF-8 Unicode text

非ASCII文字を追加すると、エンコーディングが自動的に変更されますか?いいえ、単にfileに強制するだけで、実際にはエンコードがUTF-8であることがわかります。これは、ASCIIに制限できなくなったためです。

TL; DR

心配する必要はありません。「ASCII」テキストファイルは変装したUTF-8ファイルであり(UTF-8を検出できません)、必要に応じて解析されます。


*あなたは尋ねるのに十分興味を持っていたので、おそらくあなたは この記事 の著者が私たちに言っていることをすでに理解しているでしょう。この部分では、エンコードの詳細、特にASCII!=UTF-8と、テキストのエンコード方法を知る必要がある理由について説明します。私は抽出しました:

エンコーディングに関する最も重要な事実

説明したばかりのものをすべて忘れてしまった場合は、1つの非常に重要な事実を覚えておいてください。使用するエンコードを知らずに文字列を使用することは意味がありません。砂に頭を突き刺して「プレーン」テキストをASCIIのふりをすることはできなくなりました。

プレーンテキストのようなものはありません。

文字列、メモリ、ファイル、または電子メールメッセージがある場合、それがどのエンコーディングに含まれているかを知る必要があります。そうしないと、文字列を解釈したり、ユーザーに正しく表示したりできません。

ほとんどすべての愚かな「私のウェブサイトは意味不明なように見える」または「アクセントを使うとメールを読めない」という問題は、単純な事実を理解していない素朴なプログラマーに帰着します。文字列は、UTF-8またはASCIIまたはISO 8859-1(ラテン1)またはWindows 1252(西ヨーロッパ)を使用してエンコードされているため、単に正しく表示したり、どこで終了するかさえわかりません。 100を超えるエンコーディングがあり、コードポイント127を超えると、すべてのベットがオフになります。


**Fun Fact:@ByteCommanderは、fileがファイルの最初の50-100kbのみを見ると指摘しました。テキストファイルの先頭から遠く離れた非ASCII文字である場合、fileはASCIIと見なします。

7
Zanna

[名前を付けて保存]をクリックすると、左下のいくつかのエンコーディングから選択し、追加と削除(最後のエントリ)を選択すると、さまざまなUnicodeエンコーディングを含む使用可能なエンコーディングのリストが表示されます。

enter image description here

7
Bruni