1

テキストを入力し、いくつかの関数を使用して並べ替えるプログラムがあります。テキストは形式に関係なく読み取り可能である必要がありますが、拡張ASCIIエンコーディングに保存されたファイルをインポートすると、127を超える文字は無視されます。周りを見回すと、これを克服する方法がわかりません。ファイルはUTF-8とUnicodeで正常に読み取られます。文字列をUTF-8に変換しようとしましたが、問題の文字は、代わりに形のような疑問符として表示されます。値が正しいことがわかります。ûの場合は0xBFですが、値として解釈されていません。

誰かがここで私を助けてくれますか、私はこれまでこの種のことで多くの仕事をしたことがありません。それが助けになるなら、私はC#で働いています。

変換するための現在のコードは次のようになります。

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding();
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd);
sd = u.GetString(asciiBytes);

文字列はどこにありますかsd。この文字列をインポートするとき、テキストエンコーディングを指定しません。

string input = File.ReadAllText(fname);
...
parser(input);
4

1 に答える 1

2

値が正しいことがわかります:ûの場合は0xBF

これは、ûのutf-8エンコーディングではなく、2バイトシーケンス、0xC3+0xBBになります。明らかに、ファイルのエンコーディングが間違っていると推測しました。西ヨーロッパと南北アメリカで一般的なWindowsコードページ1252でのその文字のエンコーディングは、0xFBです。英国でも一般的ですが、居住国です。数字を逆にしましたか?

代わりにEncoding.Defaultを使用してください。

于 2011-12-03T16:14:32.927 に答える