ANSI vs SHIFT JIS与c#中的UTF-8

时间:2012-04-18 12:52:56

标签: c# encoding character-encoding

我一直试图找出差异很长一段时间。问题在于使用ANSI编码的文件具有日语字符,例如:­‚È‚­‚Æ‚à1‚‚ÌINCREMENTs‚ª•K—v‚Å‚·.它在shift-jis中等效于少なくとも1つのINCREMENT行が必要です.,预计将使用日语。

我需要在从网页上的文件(ANSI)中读取后显示这些字符。 UTF-8中还有一些其他文件显示的字符没有看到这个。我发现很难弄清楚什么是差异,我如何改变编码来做正确的事情.. 我使用c#来读取这个文件并显示它,如果在web上修改它,我还需要将字符串写回文件。这里有任何编码和解码模式吗?

1 个答案:

答案 0 :(得分:6)

就代码页而言,“ANSI”(和.NET中的Encoding.Default)基本上只是意味着“此系统使用的非Unicode代码页” - 究竟是什么代码页,取决于如何系统已配置,但在西欧系统上,它可能是Windows-1252。

对于文本来自的系统,“ANSI”似乎意味着Shift-JIS - 所以除非您的系统具有相同的代码页,否则您需要告诉您的代码将文本读作Shift-JIS

假设您正在使用StreamReader阅读文件,则有各种构造函数需要Encoding,因此只需使用Encoding.GetEncoding("shift_jis")或{{1}获取Shift-JIS编码并使用它来构建StreamReader。