无法在Shift JIS cp392编码中读取文本文件

时间:2013-07-23 17:10:30

标签: c# windows windows-8 windows-runtime

在Windows应用商店应用中以Shift JIS cp392编码读取文本文件时出现问题。 我使用此代码来读取文本文件:

var streamOpenedFile = await file.OpenAsync(FileAccessMode.Read);

using (var inputOpenedFile = streamOpenedFile.GetInputStreamAt(0))
{
    using (StreamReader reader = new StreamReader(inputOpenedFile.AsStreamForRead(), Encoding.UTF8))
    {
        fileContent = await reader.ReadToEndAsync();
    }
}

但是我在fileContent中收到的字符串只是一个奇怪的字符,当我用记事本打开它时看起来不像字符串。 任何人都可以帮我解决这个问题吗? 非常感谢。

1 个答案:

答案 0 :(得分:3)

您似乎已将输入流标记为UTF-8,这意味着输入流将被解释为UTF-8而不是Shift JIS。如果您希望将其解释为Shift JIS,则需要更改reader的编码。

var streamOpenedFile = await file.OpenAsync(FileAccessMode.Read);

using (var inputOpenedFile = streamOpenedFile.GetInputStreamAt(0))
{
    using (StreamReader reader =
          new StreamReader(
             inputOpenedFile.AsStreamForRead(),
             Encoding.GetEncoding(932))
    {
        fileContent = await reader.ReadToEndAsync();
    }
}