none
读取中文文本的时候出错,提示:WinRT 信息: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 RRS feed

  • 问题

  • 读取Txt文档,却提示没有该Unicode字符。

    以下是读取文件的代码:

    var file = await Package.Current.InstalledLocation.GetFileAsync("Data\\files\\cynh.txt");

    string content = string.Empty;

    var stream = await file.OpenReadAsync();

    var input = stream.GetInputStreamAt(0);

    var reader = new DataReader(input);

    uint count = await reader.LoadAsync((uint)stream.Size);

    var result = reader.ReadString(count);

    content = result;

    但是运行后却报:

    在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。

    WinRT 信息: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。

    应该如何做呢?



    2012年5月22日 14:49

答案

全部回复

  • 请检查和修改你的 cynh.txt, 最好是能够逐个检查其字节,看是否有一些特殊的控制符或者自定义字符。 你的代码没有错误,问题是cynh.txt的内容造成的。

    有些字符无法映射到目前你使用的代码页中。所以你还可以直接以二进制形式读取到一个字节数组,然后转换 (ASCII 32 到 126 为常用英文数字以及符号字符)。

    reader.ReadBytes(array);


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年5月25日 2:54
    版主
  • 我把这个txt文档中的内容复制到一个之前可以读取的文件中,然后保存。就可以读取。

    是否是编码问题呢?

    2012年5月25日 10:33
  • 是的,你在用记事本保存的时候,注意下其编码:


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月28日 3:11
    版主
  • 多谢版主。

    可在我的应用中,txt是从web端下载下来的。可能就是gb2312编码的。我需要在程序中对其转码后保存吗?


    2012年5月28日 9:19
  • 所以,建议你还是以字节读取。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月28日 9:28
    版主