【问题标题】:Unicode characters not getting displayed in csv export using c#使用 c# 在 csv 导出中未显示 Unicode 字符
【发布时间】:2018-08-16 20:28:13
【问题描述】:

如果我只将字符串作为输入,则以下代码可以正常工作

Response.ContentType = "text/csv";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment; filename=WaitingForApproval_" + ".csv");

            String output = "";
            output += "Name, callNumber" + "\n";
            output += "잘 지냈어요?,34343555" + "\n";
            Response.Write(output);
            Response.End();


            using (StreamWriter sw = new StreamWriter(new FileStream("c:/Temp.csv", FileMode.Create), Encoding.UTF8))
            {
                sw.WriteLine(_exportedCSV);
            }

但是当我尝试从代码生成字符串时,导出 csv 后它对我不起作用,它显示错误字符而不是原始字符-

    string dataCSV = GenerateCSV();

  using (StreamWriter sw = new StreamWriter(new FileStream("c:/Temp.csv", FileMode.Create), Encoding.UTF8))
            {
                sw.WriteLine(dataCSV);
            }


public string GenerateCSV()
{

 StringBuilder sb = new StringBuilder();

            string Value = string.Empty;
            sb.Append("sep=;");
            sb.Append("\r\n");

// some logic to get string

  return Convert.ToString(sb);

}

我在调试模式下从上面的代码中得到的实际字符串 -

sep=; Country;Korea;Name;잘 지냈어요?(HWR);

enter image description here

【问题讨论】:

  • 我认为你应该在 GenerateCSV 函数中设置你的字符串生成器也可以使用 UTF-8
  • 第二个例子是否包含Response.ContentEncoding = System.Text.Encoding.UTF8
  • @Evenhuis:是的,包括在内。
  • "它显示错误的字符" - 什么时候看到的?在什么程序中打开?

标签: c# csv unicode unicode-string


【解决方案1】:

尝试在GenerateCSV 中为StringBuilder 执行以下操作

 Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(mystring));

更具体的回报如 -

  return Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(sb));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    相关资源
    最近更新 更多