テキスト ファイルに複数のエンコーディングを持たせるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2260986

質問

ANSI でエンコードされたファイルがあります。ただし、中にはアラビア文字が表示されます。このテキスト ファイルは何らかのプログラムによって生成されたものですが (情報はありません)、アラビア文字を表示するための何らかの内部エンコード (可能であれば) があるようです。

そんなことあるんですか?そうでない場合、ANSI ファイルでアラビア文字を表示するにはどうすればよいでしょうか?

※可能であればJavaコードで説明してください


エディション01

Notepad++ で開くと、ページのエンコードが ANSI であることが表示されます。この写真を確認してください:

http://www.4shared.com/file/221862075/e8705951/text-Windows.html


エディション02

ファイルは次の場所から確認できます。

http://www.4shared.com/file/221853641/3fa1af8c/data.html

役に立ちましたか?

解決

私は、FirefoxとOperaの両方でファイルを開いてみました。私は、ファイルのエンコーディングは、その可能性が最も高いですので、それは、両方のブラウザで正しく表示するために取得するには、アラビア語のWindows-1256に文字エンコーディングを設定する必要がありました。

注: 私はもともとコメントとして投稿ですが、それに答えを作るように頼まれた。

他のヒント

ANSI エンコードされていることはどうやってわかりますか?UTF-8 のようなマルチバイト エンコーディングではない場合は、次のようなアラビア語コード ページを使用してエンコードされていると思います。 Windows-1256.

16 進数エディターでファイルを見て、アラビア文字に含まれる番号を調べて、そのファイルがどのエンコーディング/コード ページで作成されたかを調べることができます。

短い答え:おそらく、テキスト ファイルは「ANSI」エンコードではなく、utf-8 でエンコードされています。

長い答え:

まず、「ANSI」(Windows の場合) という用語は、固定エンコーディングを意味するものではありません。その意味は言語設定によって異なります。たとえば、西ヨーロッパと米国では、通常は次のようになります。 Windows-1252 (の亜種 ISO/IEC 8859-1、latin-1 とも呼ばれる)、日本では、 シフトJIS, 、そしてアラビア諸国では、 ISO/IEC_8859-6.

アラビア語以外のバージョンの Windows を使用していて、言語設定を変更していない場合、メモ帳でファイルを開いたときにファイル内にアラビア文字が表示される場合は、そのファイルがこれらの ANSI エンコードのいずれかではないことは確かです。むしろ、おそらくそれは、 ユニコード.

Windows では通常「UNICODE」を意味するわけではないことに注意してください。 UTF-16LE. 。かもしれない UTF-8 同じように。どちらも現在 Unicode で定義されている 100,000 以上の文字をすべてエンコードできるエンコーディングですが、その方法は異なります。どちらも 可変長エンコーディング, つまり、すべての文字が同じビット数を使用してエンコードされるわけではありません。

UTF-8 では、各文字は 1 ~ 4 バイトとしてエンコードされます。ASCII 文字が 1 バイトでエンコードされるようにエンコードが選択されています。

UTF-16 では、各文字は 2 バイトまたは 4 バイトとしてエンコードされます。このエンコーディングは元々、Unicode の文字数が 64K 未満だったときに発明され、したがってすべての文字を 1 つの 16 ビット ワードにエンコードできました。その後、Unicode が 64K の制限を超えて拡張する必要があることが明らかになったとき、0xD800 ~ 0xDFFF の範囲の単語のペアを使用して、最初の 64K (マイナス 0x800) 文字以外の文字を表すスキームが考案されました。

ファイルの実際の内容を確認するには、16 進エディタでファイルを開きます。

  • 最初の 2 バイトが FF FE の場合、UTF-16LE (リトル エンディアン) である可能性があります。
  • 最初の 2 バイトが FE FF の場合、それはおそらく UTF-16BE (ビッグ エンディアン、Windows ではありそうもない)
  • 最初の 3 バイトが EF BB BF の場合は、UTF-8 である可能性があります。
  • 00 バイトが多く表示される場合は、UTF-16 (00 バイトのペアが表示される場合は UTF-32) である可能性があります。
  • アラビア文字が 1 バイトを占める場合は、ISO-8859-6 である可能性があります (例:ش は D5 になります)。
  • アラビア文字が複数のバイトを占める場合は、UTF-8 である可能性があります (例:ش は D8 B4 になります)。
  

そのようなことはありますか?

はありません。

  

ではない場合は、ANSIファイルはアラビア語の文字を表示することができますか?

<デル>これは、Windows-ANSIエンコードされたファイルはありません。もっと可能性が高い、それは<のhref = "http://en.wikipedia.org/wiki/Variable-width_encoding" のrel = "nofollowをを使用していますnoreferrer ">可変幅エンコーディングに、最も可能性の高いUTF-8:UTF-8にはUS-ASCIIでその位置(実際には、それはそのように設計された)と同等であり、また、推論によってでは多くの共通の文字位置Windowsの-ANSIます。

のために

編集:私たちは、この混乱のためにマイクロソフトに感謝しなければなりません。それはエンコーディングに来るとき「ANSIは、」よく指定されていません。通常、ラテン語に由来し、「西洋」のアルファベットに対応して発生したコードページ1252で、Windowsのデフォルトのエンコーディング(「Windowsの-1252」)、静置することを意図しています。

しかし、他の国でのWindowsで使用されるデフォルトのエンコーディングのないのWindowsの-1252のではなく、その後で別のエンコーディング、される(古いバージョンのWindowsには...今日、デフォルトではUTF-8です)また、「ANSI」と呼ばれます。この場合、コードページ1256ます。

ANSI文字エンコーディングは217個の文字を可能にし、アラビア語の文字が含まれていません。私は多分、ファイルが代替符号化を使用すると考えます。

あなたの編集をAnwsering、どのような表示されていることはANSI文字セットの能力を超え、明らかであるため、問題は、メモ帳++であることが表示されます。

は、最初に私はあなたのファイルをダウンロードし、そのエンコーディングをチェックするためのvimを使用しようと、知っているようには見えなかったと++メモ帳に何が起こったのかと同様にすることができる、それがlatin1言っ二マシン上で(一般的な答えを与えました)。< BR> 私はfile data.txtを行なったし、出力はこれをします:

data.txt: ISO-8859 text, with CRLF line terminators

は、このことができます願っています。

編集
ブラウザのものを使用すると、この答えが間違っていることを示しました。

ISO-8859-4とISO-8859-13はエラーなしで、テキストを表示はなく、アラビア語の文字があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top