1

ユーザー入力情報に基づいてtxtファイルを作成するC#で構築されたWebアプリケーションがあります。このtxtファイルは、コマンドラインツールを介してアプリケーションでPGPに変換されます。

ユーザーが国際文字を入力すると、PGPファイルが復号化されるときに変更されます。
例えば。ユーザーが「ó」と入力すると、PGPを復号化した後に「ó」に変換されます。

作成されたtxtファイルには正しい文字が含まれていますが、txtに戻すと正しくありません。これはエンコーディングの問題だと思いますが、どうすればよいかわかりません。

これは私のコードがどのように見えるかです:

//Create the text file
            using (StreamWriter sw = File.CreateText(filePath + fileName)) //Create text file 
            {
                sw.Write(bodyText); //Add body text to text file.
            }
//PGP Encrypt
            using (Process cmd = new Process()) //Open the pgp command line tool and start it using the arguments.
            {
                cmd.StartInfo.WorkingDirectory = "C:\\Program Files\\PGP Corporation\\PGP Command Line\\";
                cmd.StartInfo.UseShellExecute = false;
                cmd.StartInfo.FileName = "pgp.exe";
                cmd.StartInfo.Arguments = arguments;
                cmd.StartInfo.CreateNoWindow = true;
                cmd.StartInfo.RedirectStandardInput = true;
                cmd.StartInfo.RedirectStandardOutput = true;
                cmd.StartInfo.RedirectStandardError = true;
                cmd.Start();
                cmd.WaitForExit();
                cmd.Close();
            }
4

2 に答える 2

0

PGP復号化ツールは、ファイルをUTF-8でエンコードされたものとして解釈しているようです。したがって、UTF-8でエンコードされたファイルを作成してみてください

于 2012-11-28T15:20:53.803 に答える
0

編集:実際には、BOMを使用してファイルを書き込む方が理にかなっていsw.Writeますが、PGP復号化はそうではない可能性があるため、BOMがない場合にデフォルトでWindows-1252になるメモ帳で開いている場合はどうでしょうか。その場合は、復号化されたファイルをC#で読み取り、開いたときにエンコードをUTF8として指定してみてください。

私が見つけたÃ文字は通常、Windows-1252Encoding.GetEncoding(1252)がUTF8として解釈されているか、またはその逆です。一部の古いプログラムはデフォルトで、またはWebソースからそれを使用するため、問題はPGP暗号化よりもはるかに大きい可能性があります。

ファイルをWindows-1252として書き込んでみてください(おそらく、PGPは実際にはWindowsのデフォルトになっています)。または、ファイルを書き出すときに、UTF8のBOMがあることを確認してください。

于 2012-11-28T16:42:07.600 に答える