我正在解析二进制数据中使用Shift-JIS编码字符串解析文件。我当前的代码是这样的:将拉丁字符从Shift JIS转换为Unicode中的拉丁字符
public static string DecodeShiftJISString(this byte[] data, int index, int length)
{
byte[] utf8Bytes = Encoding.Convert(Encoding.GetEncoding(932), Encoding.UTF8, data);
return Encoding.UTF8.GetString(utf8Bytes);
}
它工作正常,我能够从这种方法得到有用的字符串,虽然当我显示与拉丁字符的字符串到我的WinForms应用程序,我看到的字符比正常更宽。
Latin characters in Shift-JIS string
我不知道这是否是我的编码逻辑,或者我应该显示的字符串方式的问题(我就是直接将它们传递到我的控制)。任何帮助,将不胜感激!
[.NET显然有这个可用](https://msdn.microsoft.com/en-us/library/ebza6ck1.aspx),所以我最终使用'String.Normalize()'。 – InstilledBee