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

rem*_*emo 5 c# encoding character-encoding

我一直试图找出差异很长一段时间.问题是使用ANSI编码的文件具有日语字符,例如:­‚È‚­‚Æ‚à1‚‚ÌINCREMENTs‚ª•K—v‚Å‚·.它在shift-jis中等效,?????1??INCREMENT??????.预计是日语.

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

Mic*_*sen 6

就代码页而言,"ANSI"(以及Encoding.Default在.NET中)基本上只是意味着"此系统使用的非Unicode代码页" - 究竟是什么代码页,取决于系统的配置方式,但在西方欧洲系统,很可能是Windows-1252.

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

假设您正在使用StreamReader读取文件,那么有各种构造函数可以使用Encoding,因此只需使用Encoding.GetEncoding("shift_jis")或获取Shift-JIS编码,Encoding.GetEncoding(932)然后使用它来构建StreamReader.