私はこのコードを持っています:
string s = "آ";
StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8);
writer.WriteLine(s);
しかし、実行すると、a.txtに「آ」が表示されません。 a.txtに文字列がありません!それは空です!何が問題なの!?!誰かが私を助けることができますか?
Close()
StreamWriter
は決してありません。
書き込みが終了したときにwriter.Close()
を呼び出すと、文字が表示されます。
ただし、IDisposable
を実装しているため、StreamWriter
の作成をusing
ステートメントでラップする必要があります。
using(StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8))
{
writer.WriteLine(s);
}
これにより、ストリームが閉じられます。
見た目では、終了する前に Flush()
ingまたは Close()
StreamWriter
を実行していませんあなたの申請。 StreamWriter
は内部でバッファを使用します。このバッファは、アプリケーションを閉じる前にフラッシュする必要があります。そうしないと、StreamWriter
がスコープ外になります。そうしないと、書き込まれたデータがディスクに書き込まれません。
完了したらClose()
を呼び出すことができますが、代わりに using
ステートメントを使用して、StreamWriter
が確実に取得されるようにすることをお勧めします。適切に廃棄されます。
string s = "آ";
using (StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8))
{
writer.WriteLine(s);
}
File.WriteAllText("a.txt", s, Encoding.UTF8);
を使用してみてください。
正しい特殊文字を使用してリストビューをExcelにエクスポートするための完全な機能に従ってください。
private void Exportar()
{
Encoding encoding = Encoding.UTF8;
saveFileDialog1.Filter = "Arquivo Excel (*.xls)|*.xls";
saveFileDialog1.FileName = "logs";
saveFileDialog1.Title = "Exportar para Excel";
StringBuilder sb = new StringBuilder();
foreach (ColumnHeader ch in lstPesquisa.Columns)
{
sb.Append(ch.Text + "\t");
}
sb.AppendLine();
foreach (ListViewItem lvi in lstPesquisa.Items)
{
foreach (ListViewItem.ListViewSubItem lvs in lvi.SubItems)
{
if (lvs.Text.Trim() == string.Empty)
{
sb.Append(" ");
}
else
{
string ITEM = Regex.Replace(lvs.Text, @"\t|\n|\r", "");//remover novas linhas
sb.Append(ITEM + "\t");
}
}
sb.AppendLine();
}
DialogResult dr = saveFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.UTF32);
sw.Write(sb.ToString());
sw.Close();
}
}
これらのUnicode文字を含むファイルをどこかから読み取りたい場合は、いくつかの変更を加えてファイルに書き戻すと、問題が発生します。私は同じ問題で立ち往生していました。これが私のために働いた解決策です
Unicode文字を含むファイルからのデータの読み取り
List<string>fileData= File.ReadAllLines("URPath",Encoding.Default).ToList());
//Any modifications
File.WriteAllLines("URPath", hstFileData,Encoding.Default);
私はこれがきれいではないことを知っていますが、それはうまくいきました。お役に立てれば!
いくつかのヒント:
チェック 方法:ファイルにテキストを書き込む