テキストドキュメントで開いた後は問題なく動作するプレーンテキストがありますが、MS Wordで開いて[段落を表示]オプションをクリックすると、いくつかのスペースが次のように表示されます度記号に似た記号 (小さな円。MS Word 文書で alt+255 を入力すると表示されます)。これを取り除く方法を考えています。私は削除した $nbsp を持っていましたが、後遺症があると思います。
誰かが助けてくれることを願っています。本当に迷惑です。
テキストドキュメントで開いた後は問題なく動作するプレーンテキストがありますが、MS Wordで開いて[段落を表示]オプションをクリックすると、いくつかのスペースが次のように表示されます度記号に似た記号 (小さな円。MS Word 文書で alt+255 を入力すると表示されます)。これを取り除く方法を考えています。私は削除した $nbsp を持っていましたが、後遺症があると思います。
誰かが助けてくれることを願っています。本当に迷惑です。
問題は文字セットの 1 つである可能性があります。私のテストでは、alt-number は Windows では機能しなかったので、Scite というテキスト エディターで実行し、コピーして Windows に貼り付けました。文字 alt-255 をコピー アンド ペーストすると、「段落を表示」オプションを使用して度記号が作成されましたが、文字 A0 として保存されました。改行スペースがない場所に表示される場合)。
C# はデフォルトで文字列エンコーディングとして Unicode を使用するため、ファイルを C# にロードすると、別の方法で指定しない限り、Unicode であると想定されます。私の場合、私のファイルは61 A0 62 A0 63
「ab c」です(スペースは実際には改行スペースではありません)。c# がロードされると、これは a、b、および c を正しく読み取りますがA0
、有効な Unicode 文字 (または文字の先頭) ではないため、結果としてそれを Unicode 文字 65533 (置換文字) としてロードします。これは、検出時に使用されます。解釈不能なキャラクター。
私のテストでは、それをロードしてエンコーディングをコードページ 1252 に指定すると、ノンブレーク スペースが正しくロードされ、string.replace を使用してそれを置き換えることができます。
result = File.ReadAllText("testfile.txt", System.Text.Encoding.GetEncoding(1252));
result = result.Replace((char)160, ' ');
肝心なのは、このファイルをロードするときに、文字が正しく解釈されるように正しいエンコーディングを使用していることを確認することです。自分でファイルを生成したと仮定すると、使用しているエンコーディングを知っておく必要があります。
最後の注意点は、コメントで述べたように、保存されたファイルにあるように見えるため、改行されていないスペースを自分が考えているように削除していない可能性があるように聞こえるということです。上記はファイル内のそれらを取り除く方法の質問に答えますが、ソースで問題に対処し、最初からそれらをファイルに入れない方が良いでしょう. おそらく、ファイルを作成する方法の詳細を含む別の質問を開いて、改行しないスペースを保存している理由を尋ねてください。