Shift_JIS 的文字集合基本是按照JIS X 0208规定的。但实际上各个厂商各自进行扩展,包含了大量重复的、规格以外的文字。因此,Windows在本来的 Shift_Jis的文字集合之外,又增加了NEC扩展、IBM扩展所包含的文字。这种规格和实际情况的分歧长期存在,随着windows-31J的规格 化,混乱情况有所改善。
所以
String value = new String(resultString.getBytes("SHIFT-JIS"), "UTF-8"); // 会有个别扩展字符乱码
String value = new String(resultString.getBytes("Windows-31J"), "UTF-8"); // 完美