C# 将编码窗口1252转换为UTF-8';Windows Server 2008 R2不能完全正常工作

C# 将编码窗口1252转换为UTF-8';Windows Server 2008 R2不能完全正常工作,c#,encoding,C#,Encoding,我在本主题中使用示例代码:http://stackoverflow.com/questions/5568033/convert-a-strings-character-encoding-from-windows-1252-to-utf-8 将windows-1252字符串转换为utf-8字符串。它在Windows7平台上运行良好。但是,当我将这个程序部署到服务器Windows server 2008R2上时,它并没有完全按照我的预期工作 例如: 在窗口7上,转换后的字符串: Ph值ần 1:Th

我在本主题中使用示例代码:http://stackoverflow.com/questions/5568033/convert-a-strings-character-encoding-from-windows-1252-to-utf-8 将windows-1252字符串转换为utf-8字符串。它在Windows7平台上运行良好。但是,当我将这个程序部署到服务器Windows server 2008R2上时,它并没有完全按照我的预期工作

例如:

在窗口7上,转换后的字符串:

Ph值ần 1:Thị trườngchứng khoán vácácôty phát hánh chứ吴坤

Ph值ần 2:曲ản lýnhanướcđốivới cácôty phát hánh chứ吴坤

Ph值ần 3:Thực trạng váphơng hướngquản lýphùhợPở 不及物动词ệt南喜ệ不

在windows server 2008R2上,转换后的字符串:

Ph值ần 1:Thị trýờngchứng khoán vácácôty phát hánh chứ吴坤

Ph值ần 2:曲ản lýnhanýớcðốivới cácôty phát hánh chứ吴坤

Ph值ần 3:Thực trạng váphýng hýớngquản lýphùhợPở 不及物动词ệt南喜ệ不


我找不到解决这个问题的办法。你能帮我解决这个问题吗?非常感谢

我猜您的两台机器上的旧代码页不匹配

你可以用

[Text.Encoding]::Default
在PowerShell中找到它:

IsSingleByte      : True
BodyName          : iso-8859-1
EncodingName      : Western European (Windows)
HeaderName        : Windows-1252
WebName           : Windows-1252
WindowsCodePage   : 1252
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
EncoderFallback   : System.Text.InternalEncoderBestFitFallback
DecoderFallback   : System.Text.InternalDecoderBestFitFallback
IsReadOnly        : True
CodePage          : 1252

你是怎么得到ti的ếng ViệCP1252编码中的t?它缺少很多必要的字符。我想说,您对源代码编码的假设是错误的,可能您正在使用Windows中设置的旧代码页(这在两台机器上都不同)。永远不要那样做。始终明确知道文本的编码方式。您可以通过输入
[text.encoding]::default来签入PowerShell,并查看它的输出。我的猜测是,这两台机器上的情况都不一样(可能不是它工作的那台机器上的Windows-1252)。亲爱的乔伊!非常感谢你的回答!我使用了您的指南,并找出了客户端和服务器编码之间的差异。默认英语的客户端编码为Windows-1252,默认越南语的服务器编码为Windows-1558。我将编码更改为Windows-1258:*encoding.GetEncoding(1258)。那太好了!它工作得很好^__^