我正在处理一个外部 Web 服务,它给了我错误编码(和/或损坏)的字符串UTF-8
( 可爱的 A 帽子 ( ) 比比皆是。ISO LATIN
WINDOWS-1252
UTF-8
Â
我显然无法修复外部 Web 服务如何存储其字符串,从而导致信息丢失。因此,我所知道的 100% 翻译的希望是不可能的。
但我希望有人用 Java 编写了一个启发式字符映射库(不太可能有人会键入 A 帽子)。
如果不是,我想我可以移植这些家伙的 PHP 代码:https ://stackoverflow.com/a/3521340/318174
更新和说明:像@VGR 这样的简单转换将不起作用。我没有原始字节。数据在端点转换不正确(SOAP 服务器可能getBytes(/*with out correct encoding*/)
已完成,或者数据可能以不正确的格式存储)。当您在 Java 中将字节转换为字符串时,除非编码在任何地方都相同,否则不会保留数据。ASCII
如果您想到<->之类的东西,这很容易理解UTF-8
。由于数据不会丢失但经常混淆,因此更复杂Windows-1252
或ISO Latin
更复杂。那是因为这些编码可以是两个字节,而不是UTF-8
.
如果您不相信我,您可以尝试getBytes()
使用各种编码来回做,并且会看到数据损坏和数据丢失。