diff --git a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
index 3324f0b83..dc6a982b3 100644
a
|
b
|
|
22 | 22 | import java.util.Locale; |
23 | 23 | import java.util.Map; |
24 | 24 | import java.util.Map.Entry; |
| 25 | import java.util.OptionalInt; |
25 | 26 | import java.util.Set; |
26 | 27 | import java.util.regex.Pattern; |
27 | 28 | import java.util.stream.Collectors; |
… |
… |
static String removeUnwantedNonPrintingControlCharacters(String s) {
|
450 | 451 | } |
451 | 452 | |
452 | 453 | static boolean containsUnusualUnicodeCharacter(String key, String value) { |
453 | | return value != null && value.chars().anyMatch(c -> isUnusualUnicodeBlock(key, c)); |
| 454 | return getUnusualUnicodeCharacter(key, value).isPresent(); |
| 455 | } |
| 456 | |
| 457 | static OptionalInt getUnusualUnicodeCharacter(String key, String value) { |
| 458 | return value == null |
| 459 | ? OptionalInt.empty() |
| 460 | : value.chars().filter(c -> isUnusualUnicodeBlock(key, c)).findFirst(); |
454 | 461 | } |
455 | 462 | |
456 | 463 | /** |
… |
… |
private void checkSingleTagValueSimple(MultiMap<OsmPrimitive, String> withErrors
|
675 | 682 | .build()); |
676 | 683 | withErrors.put(p, "ICV"); |
677 | 684 | } |
678 | | if ((containsUnusualUnicodeCharacter(key, value)) && !withErrors.contains(p, "UUCV")) { |
| 685 | final OptionalInt unusualUnicodeCharacter = getUnusualUnicodeCharacter(key, value); |
| 686 | if (unusualUnicodeCharacter.isPresent() && !withErrors.contains(p, "UUCV")) { |
| 687 | final String codepoint = String.format(Locale.ROOT, "U+%04X", unusualUnicodeCharacter.getAsInt()); |
679 | 688 | errors.add(TestError.builder(this, Severity.WARNING, UNUSUAL_UNICODE_CHAR_VALUE) |
680 | | .message(tr("Tag value contains unusual Unicode character"), s, key) |
| 689 | .message(tr("Tag value contains unusual Unicode character {0}", codepoint), s, key) |
681 | 690 | .primitives(p) |
682 | 691 | .build()); |
683 | 692 | withErrors.put(p, "UUCV"); |