Мое приложение asp.net должно экспортировать набор данных в виде файла CSV для открытия в Excel. Набор данных содержит японские символы кандзи двойной ширины в дополнение к английским символам.
Я пробовал несколько различных комбинаций заголовков, наборов символов и кодировки содержимого, но мне не удалось найти правильную комбинацию, которая позволяет Excel открывать файл и правильно отображать японские символы.
Если, однако, я открою файл в Блокноте, а затем сохраню его в кодировке UTF-8, я смогу открыть файл в Excel и увидеть японские символы, как и предполагалось. Поэтому это должно быть возможно, но я не могу найти правильную комбинацию заголовков, чтобы она работала без открытия и сохранения экспортированного файла в Блокноте.
Private Sub TestCSV()
Dim context As HttpContext = HttpContext.Current
context.Response.Clear()
context.Response.ClearHeaders()
context.Response.ClearContent()
context.Response.Cache.SetCacheability(HttpCacheability.NoCache)
context.Response.AddHeader("Content-Disposition", "attachment; filename=test.csv")
context.Response.ContentType = "text/csv"
context.Response.Charset = Encoding.UTF8.WebName
context.Response.Write("English,Japanese")
context.Response.Write(Environment.NewLine)
context.Response.Write("Test,日本語")
context.Response.End()
End Sub
Любая помощь в получении этого кода будет принята с благодарностью.
Я также пытался использовать следующие строки кодов в различных комбинациях и порядках, но ничего не получалось.
context.Response.BinaryWrite(Encoding.UTF8.GetPreamble())
context.Response.BinaryWrite(Encoding.GetEncoding("utf-16le").GetPreamble())
context.Response.Charset = Encoding.GetEncoding("utf-16le").WebName
context.Response.AddHeader("Content-Type", "text/csv; charset=utf-16")
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250")
Спасибо!