C# 中西班牙语文件的编码问题

Encoding issue with spanish file in C#

我在 azure blob 存储中有一个西班牙语在线文件存储。有些词有特殊的特征(例如:Almacén) 当我用notepad++打开文件时,编码是ANSI。

所以现在我尝试用代码读取文件:

        using StreamReader reader = new StreamReader(Stream, Encoding.UTF8);
        blobStream.Seek(0, SeekOrigin.Begin);
        var allLines = await reader.ReadToEndAsync();

问题是“allLines”编码不正确,我有一些问题,例如:Almac�n

我尝试过这样的解决方案: C# Convert string from UTF-8 to ISO-8859-1 (Latin1) H

但还是不行

(最终目标是“合并”两个 csv,所以我读取了两者的流,删除 header 并连接字符串以再次推送它。如果有更好的解决方案来合并 csv可以跳过此编码问题的 c# 我也对此持开放态度)

您正在尝试读取一个非 UTF8 编码的文件,就像它是 UTF8 编码的一样。我可以用

复制这个问题
var s = "Almacén";
using var memStream = new MemoryStream(Encoding.GetEncoding(28591).GetBytes(s));

using var reader = new StreamReader(memStream, Encoding.UTF8);
var allLines = await reader.ReadToEndAsync();

Console.WriteLine(allLines); // writes "Almac�n" to console

您应该尝试读取编码为 iso-8859-1“西欧 (ISO)”的文件,代码页为 28591。

using var reader = new StreamReader(Stream, Encoding.GetEncoding(28591));
var allLines = await reader.ReadToEndAsync();