Java中的字符串代码转换

Java中的字符串代码转换,java,string,encoding,codepages,Java,String,Encoding,Codepages,我最近发现了一段代码,它执行以下操作: String s = ... // whatever ... s = new String(s.getBytes(myEncoding), myEncoding); 对我来说,这似乎毫无意义 在某些情况下(某些特定的语言环境设置组合、使用的技术等),此代码是否可能有用 提前感谢是的,该代码通常都是胡说八道。是的,这段代码可能对字符串做了“一些事情”(可能不是什么好事)。一般来说,如果您已经错误地将字节转换为字符,那么尝试重新转换很少会得到合法的结果。(可

我最近发现了一段代码,它执行以下操作:

String s = ... // whatever
...
s = new String(s.getBytes(myEncoding), myEncoding);
对我来说,这似乎毫无意义

在某些情况下(某些特定的语言环境设置组合、使用的技术等),此代码是否可能有用


提前感谢

是的,该代码通常都是胡说八道。是的,这段代码可能对字符串做了“一些事情”(可能不是什么好事)。一般来说,如果您已经错误地将字节转换为字符,那么尝试重新转换很少会得到合法的结果。(可能存在一些单独的情况,在这些情况下,字符编码的正确组合可能会起作用)。

这可能只是错误的语义,但却是重要的代码。myEncoding可以引用自定义CharsetEncoder。CharsetEncoder可以用自定义字节数组替换未知字符,然后在重新编码时将其剥离。您可能可以使用自定义CharsetEncoder实现类似html转义的功能。如果是这样的话,这段代码似乎太聪明了。我建议用一个更好的命名方法替换编码-解码行。2 ccoakley Myencode是普通的ISO8859-1编码