Notepad ++でのANSIからUTF-8


25

ANSIでエンコードされたテキストがあります。

ANSIテキストファイル

(Notepad ++メニューの[エンコード]> [UTF-8]を使用して)UTF-8に変換しようとすると、奇妙な文字が表示されます。

UTF-8テキストファイル

UTF-8はANSIのスーパーセットであり、その後このような問題は発生しないと思いました。とにかく、これらの奇妙なキャラクターの出現を避けることができますか?


私は後者の画像で奇妙なものを見ていない
phuclv

表示できない文字を意味しました。これを回避する方法はありますか?
user3658425

質問を編集しましたか?私はイメージが逆に見ると思う
phuclv

1
はい、申し訳ありませんが、誰かが画像を追加した直後に最後の編集をプッシュしました。これにより、追加を消去します。
user3658425 14年

回答:


38

UTF-8は文字セットではなく、Unicodeの単なるエンコーディングです。最初の128文字はASCIIと同じですが、上位128バイトが異なります。上位ビットが設定された(または0x80以上)バイトはASCIIの拡張文字であり、UTF-8ではマルチバイトシーケンスの開始バイトを示します。上記の0x93または0x94の場合です。ただし、ファイルに奇妙なものは表示されません。これらは、スマートクォートまたはオープンフォームとクロシンクォートの異なる形式のクォートであり、MS Wordなどのリッチテキストエディターを使用するときによく見られます

編集

質問が編集されました。間違ったツールを選択したためだと思います。encodeあなたは間違った文字が表示されている場合、メニュー項目は、エンコーディングを変更するためのものです。ディスクから読み取られた同じバイトシーケンスを別のエンコーディングとして処理するだけです。ASCIIとUTF-8は異なるため、不正なUTF-8バイトシーケンスがあり、上記の結果が表示されます。convert to UTF-8入力バイト全体を変更するために選択する必要があります

メモ帳のエンコード

また、ANSIとASCIIを混同しました。ANSIは、しばしばWindows-1252を指します。これは、英語のWindowsおよび一部の西ヨーロッパ言語で使用される文字セットです。ISO 8859-1は、ANSIと呼ばれることもありますが、ISO 8859-1のスーパーセットです。ISO 8859-1はUnicodeの最初の256コードポイントでもあるため、Unicodeのサブセットですが、UTF-8エンコーディングと互換性がありません。ASCIIは7ビットの文字セットであり、8ビットでエンコードされたANSIのサブセットですが、ANSIと呼ばれることもありますが、あまり正確ではありません

https://en.wikipedia.org/wiki/ANSI_character_set

一般に、文字セット間の関係は次のとおりです。

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

ありがとう、エンコーディングで文字セットを台無しにしてすみません。それらの非表示文字を避け、代わりに表示可能な引用符を使用する方法はありますか?
user3658425 14年

@ user3658425私の編集を参照してください
phuclv

1
私はまた、上記のANSI / ASCII情報編集しました
phuclv

3
一般に、「バイトオーダーマークなしのUTF-8」が必要なことに注意してください。過去に他のいくつかの人が言ったように、「UTF-8が唯一の有用な文字列エンコーディングです。」
ライキング14年

4
@WillihamTotland utf8everywhere.org
phuclv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.