Единственный раз, когда неразрывный пробел следует обрабатывать специально, - это код, предназначенный для переноса текста в текст.
Для всех других целей, включая подсчет слов, усечение и разбиение общего назначения по границам слов, неразрывный пробел по-прежнему является пробелом .
Любой аргумент, что неразрывный пробел просто «выглядит» как пробел, но не противоречит целой точке Unicode, которая представляет символы на основе их значения, а не того, как они отображаются.
Таким образом, IMHO, реализация Java String.trim () на Java не работает должным образом, и основная функция Character.isWhitespace () ошибается.
Я предполагаю, что разработчики Java написали isWhitespace () исходя из необходимости выполнения переноса текста в элементах управления. Они должны были назвать эту функцию isWordWrappingBoundary () или что-то более понятное, и использовать менее строгий тест для пробела для trim ().