2016-09-23 6 views
-1

ファイルに文字列を書き込もうとしています。ファイルに追加された文字列が特別なcharectersに変換されました

 string lines = "server.1=1.1.1.1:9999\nserver.2=2.2.2.2:8888\n"; 
     File.AppendAllText(directory_path + "zoo.cfg", lines); 

ファイルに印刷された文字列がある

"敳癲牥ㄮㄽㄮㄮㄮ㤺㤹ਹ敳癲牥㈮㈽㈮㈮㈮㠺㠸ਸ"

。 File.AppendAllTextにASCII、UTF-8、DEFAULTをエンコードしようとしました。しかし、出力は同じです。

環境:

のVisual Studio 2015は、Windows Server 2012、.NET V4.5

は私はIAMのは間違っているものを教えてください?

+1

再現可能な例を作成できますか?投稿したコードはエラーなく動作し、ファイルに適切なテキストを作成します。 – stuartd

+1

既存のファイルのエンコーディングとは何ですか?あなたはどうやってそれを読んでいるのですか? – CodeCaster

+0

それは私が一度も尋ねたことではありません。私のコメントをもう一度読み、両方の質問に適切に答えます。 – CodeCaster

答えて

0

これは変です。上記のコードは私の他のマシンで完璧に動作します。しかし、私はそれが私の新しいdev envで動作していないのか分からない何らかの理由で。 Encoding.Unicodeパラメータを追加して問題を解決しました。

File.AppendAllText(windows_directory_path + "zoo.cfg", lines, Encoding.Unicode);

Encoding.UTF8/Encoding.ASCIIは、結果の文字列の形式を変更しなかった理由は考えていません。

同じコードがどのように異なって振る舞うか、さらに疑問があります。

これが修正されたかどうかはわかりません。

2

添付ファイル全体が書き換えられません。したがって、既存のコンテンツと同じエンコーディングを使用する必要があります。

一般に、テキストのエンコーディングがわからない場合は、そのテキストを使用しないこともできます。もし誰かがそれをあなたに与えたら、「それを返せ」。彼らがあなたにそれを送るとき、使用されるエンコーディングの相互理解を伴わなければなりません。 (ところで、それはそれはASCIIだろうと非常に低いのです。そして、Encoding.Defaultはマシンからマシンまたはユーザーにユーザーに無用である。)

結果を考えると、それはファイルのエンコーディングがUTF-16(Encoding.Unicode)であったことを完全に理にかなっています。その他のエンコーディングを使用した書き込みは不要なコードです。

関連する問題