私が書いている小さなツールでエンコーディングと一般的な混乱があります。テキストボックスからASCII/UTF8データを使用してP6 .ppmをASCIIで書き込む。エンコーディング混乱?
まず最初に、以下のコードはちょっと残念ですが、私がこれまでに書いたコードのうち、実際に作業するのに最も近いことをお詫びします。
私は次のコードを使用している場合:
/*create file*/
FileStream fileS = new FileStream(filename + ".ppm", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 8, FileOptions.None);
/*create a binary writer*/
BinaryWriter bWriter = new BinaryWriter(fileS, Encoding.ASCII);
/*write ppm header*/
string buffer = "P6 ";
bWriter.Write(buffer.ToCharArray(), 0, buffer.Length);
buffer = width.ToString() + " ";
bWriter.Write(buffer.ToCharArray(), 0, buffer.Length);
buffer = height.ToString() + " ";
bWriter.Write(buffer.ToCharArray(), 0, buffer.Length);
buffer = "255 ";
bWriter.Write(buffer.ToCharArray(), 0, buffer.Length);
/*write data out*/
byte[] messageByte = Encoding.UTF8.GetBytes(ppmDataBox.Text);
bWriter.Write(messageByte, 0, messageByte.Length);
/*close writer and bWriter*/
bWriter.Close();
fileS.Close();
を次に何を私が手にすることは、私はASCIIとしてそれを、そのファイルを開いて再保存すると、私は期待してPPMを取得し、UTF-8形式で保存したファイルです。それから私は、ファイルがASCII形式で保存取得んが、ファイルが間違っている
byte[] messageByte = Encoding.ASCII.GetBytes(ppmDataBox.Text);
に
byte[] messageByte = Encoding.UTF8.GetBytes(ppmDataBox.Text);
、色が間違っていると、基本的データ:
私はラインを変更した場合しかし ファイルのテキストボックス内のデータと一致しません。
私は、テキストボックスがUTF-8で、データを貼り付けるのは実際にはASCII形式/文字だと仮定しています。そのASCIIを対応するUTF-8に変換する必要があります。それらの文字のUTF-8バージョン)。しかし、私が完全に正直であれば、これはエンコードの世界への私の最初のベンチャーであり、私は完全に無知です。だから私がゴミを話しているかどうか教えてください。ここで
は、私は、テキストボックスに貼り付けていたデータの種類のサンプルです:
ÿÿ ÿÿ ÿÿ ÿÿ aa aa aa ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿÿ ÿ
どこでも小さな黒い四角と黄色であることを意味しますが、その緑色の出てくると、ときにファイルされますASCII形式で作成されたデータは、このように見える終わる:
?? ?? ?? ?? aa aa aa ?? ?? ?? ??
このコードは完璧に働いた、とも非常にきれいに書かれていた私は:)追加することができます。 bw.close()とfs.close()を追加しましたが、 がすでに存在していないことを確認して空ではありませんでした。 コードページへのリンクを提供していただきありがとうございます私はまた、ツールがエンコーディングを選択することで利益を得るという気持ちを得ています。 もう一度おねがいします。私の質問に答える時間を割いて、非常に素晴らしいC#コード – chrispepper1989