Canonicalizes a string: heuristic CP437/UTF-8 mojibake fix followed by Unicode normalization. @param string raw string @return canonical string
(final String string)
| 390 | * @return canonical string |
| 391 | */ |
| 392 | public static String canonical(final String string) { |
| 393 | final byte[] bytes = string.getBytes(CP437); |
| 394 | String fixed = string; |
| 395 | if(string.equals(new String(bytes, CP437))) { |
| 396 | final String decoded = Token.string(bytes); |
| 397 | if(!contains(decoded, '\uFFFD')) fixed = decoded; |
| 398 | } |
| 399 | return Normalizer.normalize(fixed, Normalizer.Form.NFC); |
| 400 | } |
| 401 | } |