You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP加载含特殊字符CSV文件乱码,求ISO-8859-9编码应用方法

解决UWP读取CSV特殊字符乱码问题(ISO-8859-9编码)

嘿,我来帮你搞定这个乱码问题!你已经找对了关键——你的CSV文件用的是ISO-8859-9编码,但默认的File.ReadAllLines用的是UTF-8,所以才会出现那些�乱码。下面给你两种可行的解决方法:

方法一:直接给File.ReadAllLines指定编码

只需要修改你读取文件的那一行,加上ISO-8859-9编码参数就行。首先要确保你引用了System.Text命名空间,然后这样写:

string[] lines = File.ReadAllLines(file.Path, Encoding.GetEncoding("iso-8859-9"));

或者也可以用对应的Windows代码页编号1254,效果完全一样:

string[] lines = File.ReadAllLines(file.Path, Encoding.GetEncoding(1254));

方法二:用UWP推荐的异步API读取(更符合权限模型)

在UWP中,直接用文件路径有时候可能会碰到权限限制,所以更推荐用StorageFile的异步API来读取。因为FileIO.ReadLinesAsync没有直接指定编码的重载,我们可以先读取字节数组,再用指定编码转成字符串:

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.FileTypeFilter.Add(".csv");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // 获取ISO-8859-9编码
    var targetEncoding = Encoding.GetEncoding("iso-8859-9");
    // 读取文件字节数组
    byte[] fileBytes = (await FileIO.ReadBufferAsync(file)).ToArray();
    // 用指定编码转换成字符串,再按行分割
    string fileContent = targetEncoding.GetString(fileBytes);
    string[] lines = fileContent.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
    
    for (int i = 1; i < lines.Length; i++)
    {
        string[] data2 = lines[i].Split(';');
        // 这里处理你的数据逻辑
    }
}

这样修改之后,"ş""ü"这些特殊字符就能正常显示啦!

内容的提问来源于stack exchange,提问作者Cruwiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:30:08