什么是“difference between”?
String(s.getBytes("UTF-8"),"UTF-8");
并且
String(s.getBytes(),"UTF-8");
在第一个代码示例中,一些特殊字符被解码了,为什么?有什么区别?
如果我使用UTF-8
进行双重解码,会对任何内容产生影响吗?
s.getBytes()
使用的是你的 JVM 默认的语言环境。因此,区别取决于字符串的内容和默认的语言环境,有可能没有任何区别。 - Andy Turners.getBytes()
,特别是当你处理不能适应ASCII代码边界的字符时,例如阿拉伯语、中文、印地语等。s.getBytes()
将使用平台的默认编码,而我建议您始终使用最智能和紧凑的Unicode编码UTF-8
。 - Pushpesh Kumar Rajwanshinew String(bytes, Charsets.UTF_8)
将其转换为字符串才有意义。请在问题中提供更多关于你所拥有的数据以及如何接收它的信息。 - Jon Skeets
是一个String
,那就意味着它已经被解码了。如果由于不正确的解码而包含?
字符,则现在修复这些字符为时已晚:无论你对字符串进行多少次编码和解码,都无法恢复最初的字符串。你需要找到第一次解码该字符串的位置,并在那里使用正确的字符集。 - Daniel Pryden