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

问题
-
读取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 字符可以映射到的字符。
应该如何做呢?
- 已编辑 pettosryg 2012年5月23日 14:36
答案
-
我把这个txt文档中的内容复制到一个之前可以读取的文件中,然后保存。就可以读取。
是否是编码问题呢?
- 已标记为答案 Jie BaoModerator 2012年6月1日 7:10
-
- 已标记为答案 Jie BaoModerator 2012年6月1日 7:10
全部回复
-
请检查和修改你的 cynh.txt, 最好是能够逐个检查其字节,看是否有一些特殊的控制符或者自定义字符。 你的代码没有错误,问题是cynh.txt的内容造成的。
有些字符无法映射到目前你使用的代码页中。所以你还可以直接以二进制形式读取到一个字节数组,然后转换 (ASCII 32 到 126 为常用英文数字以及符号字符)。
reader.ReadBytes(array);
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已编辑 Jie BaoModerator 2012年5月25日 2:58
-
我把这个txt文档中的内容复制到一个之前可以读取的文件中,然后保存。就可以读取。
是否是编码问题呢?
- 已标记为答案 Jie BaoModerator 2012年6月1日 7:10
-
- 已标记为答案 Jie BaoModerator 2012年6月1日 7:10
-
所以,建议你还是以字节读取。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us