web-dev-qa-db-ja.com

テキストファイルの隠し文字を読み取るにはどうすればよいですか?

開発したアプリケーションからテキストファイルを作成しました。

テキストファイルをSYSTEM検証に送信すると、(サードパーティシステム)はファイルがinvalidおよびファイルには、ファイルの先頭に許可されていない特殊文字が正しくありません

また、ISO 8859-1またはPC850

ええと、私は Notepad ++ を使用していますが、まったく表示されません!この種の問題に最適なテキストファイルリーダーは何ですか?

Alt text

私はMacも持っているので、 TextMate ...で開いたのを覚えていると思いました。今私は彼らが何を話しているのかを知っています!

Windowsで同じようにするにはどうすればよいですか?

Alt text

8
balexandre

まあ、私はNotePad ++を使用していますが、まったく表示されません。この種の問題に最適なテキストファイルリーダーは何ですか?

問題は、「優れた」テキストエディタがすべてのテキストエンコーディングを透過的にロードできるはずです。つまり、UTF-8とBOMのような愚かな壊れたものでも、問題が発生するのを防ぐことができます。確かに、優れたテキストエディタでは、偽のBOMなしでUTF-8を保存するか、少なくともそのオプションを提供する必要がありますが、そこに偽のBOMが表示されない場合は、再保存する必要があります。 。

TextMateでファイルの先頭にある3つの上位バイトが表示される理由は、実際にはTextMateがそれを間違っており、エンコーディングをLatin- UTF-8の代わりに1。これはおそらく、Unicodeを知らない送信先のサービスの動作を再現しますが、それ自体は実際には望ましい機能ではありません。 _æ_ sと_ø_ sがまだ出ていないのもこのためです。

ファイル内のすべてのバイトを明示的に表示したい場合、必要なのは実際にはテキストエディターではなく、16進エディターです。たとえば、たくさんの選択肢があります。 xvi32 Windowsの場合。

そして、偽のBOMを生成しないようにアプリケーションを修正します。いずれにしても、UTF-8ファイルには場所がありません。非Unicodeアプリケーションで発生する問題を気にしないでください。 [アプリケーションの記述方法はわかりませんが、不要なBOMの一般的な原因は、.NETの_Encoding.UTF8_エンコーディングの使用です。 new UTF8Encoding(false)が望ましいでしょう。]

送信先のサービスがUTF-8を必要としているのか、それとも他のエンコードが必要であろうと、いずれにせよ、そのサービスのオペレーターに尋ねる必要があります。ファイル内の_æ_ et alの上位バイトが本質的に「無効」であると既に記述されている場合、非ASCII文字がまったくサポートされていない状況に直面している可能性があります。たとえば、ターゲット言語に合わせて文字を音訳することを検討する必要があります。 _æ_-> ae

4
bobince

Windowsでこの種のものを表示する簡単な方法は、「type」コマンドを使用することです。

私はこのようなことをします:

type filename.txt | more
6
kylos101

Frh​​ed 私の心に飛びつきます...それはとても素晴らしいツールです。そして、Arjanが指摘したように、ファイルをUTF-8エンコードドキュメントとして保存しています。

2
Bobby