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

如何在UWP应用中创建ANSI编码(Windows-1252/ISO-8859-1)的文本文件?

在UWP中创建ANSI编码文本文件的可行方案

你可以通过直接操作文件字节流的方式,绕开FileIO.WriteTextAsync的Unicode限制,同时适配UWP沙盒环境,具体实现步骤如下:

  1. 注册编码提供者
    UWP默认未包含Windows-1252、ISO-8859-1这类非Unicode编码的支持,需先注册编码提供者才能获取对应编码:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

注意:需先在项目中安装System.Text.Encoding.CodePages NuGet包,否则无法调用CodePagesEncodingProvider。

  1. 创建文件并写入ANSI编码字节
    通过UWP原生的文件流API,将字符串转换为目标ANSI编码的字节数组后写入文件:
// 在下载文件夹创建文件(若已存在则替换)
StorageFile file = await DownloadsFolder.CreateFileAsync("Test.txt", CreationCollisionOption.ReplaceExisting);

// 指定目标ANSI编码(替换为"ISO-8859-1"即可切换为对应编码)
Encoding ansiEncoding = Encoding.GetEncoding("Windows-1252");

// 将字符串转换为ANSI编码的字节数组
byte[] ansiBytes = ansiEncoding.GetBytes("Hällö");

// 打开文件流并写入字节
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
    using (DataWriter writer = new DataWriter(stream))
    {
        writer.WriteBytes(ansiBytes);
        await writer.StoreAsync();
        await writer.FlushAsync();
    }
}

核心说明

  • 该方案完全遵循UWP沙盒权限规则,使用的是UWP原生StorageFile与IRandomAccessStreamAPI,无需访问沙盒外路径。
  • 转换字节数组的方式直接规避了FileIO.WriteTextAsync仅支持Unicode编码的限制,确保特殊字符(ANSI 160-255区间)能被目标程序正确解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:14