2013-07-23 45 views
0

在Windows应用商店应用程序中使用Shift JIS cp392编码读取文本文件时遇到问题。 我用这个代码读取文本文件:在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收到的字符串只是一个性格怪异且看上去不像字符串时,我用记事本打开它。 任何人都可以帮我解决这个问题吗? 非常感谢。

回答

2

您似乎已将输入流标记为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(); 
    } 
} 
+0

感谢您的回答,但我发现了异常:'392'不是支持的编码名称。我尝试将“Shift_JIS”传递给GetEncoding函数,并查看它的工作原理。现在我明白了如何阅读它,但我仍然考虑是否可以了解文本文件的编码? –

+0

392不是Shift JIS代码页932是...我的错误没有检查。可悲的是除非文档格式是像HTML这样的文件,它指定检测文档编码的一系列步骤,除此之外,没有办法检查编码。如果可能,更好的选择是始终使用UTF-8保存文本文件。 – Mgetz

相关问题