Неразрывный пробел

Автор 111, 22 ноября 2024, 10:03

0 Пользователи и 1 гость просматривают эту тему.

111

Добрый день!
Подскажите, пожалуйста, почему не работает функция СИМВОЛ(160) в LibreOffice Calc? И как сделать неразрывный пробел между символами в ячейке?

mikekaganski

#1
Цитата: 111 от 22 ноября 2024, 10:03почему не работает функция СИМВОЛ(160) в LibreOffice Calc?
Работает. Формула типа

="aaaaa aaaa"&СИМВОЛ(160)&"bbb"
переносит "aaaa bbb" на новую строку вместе, когда bbb не влезает.
С уважением,
Михаил Каганский

111

У меня выдаёт результат:
aaaaa aaaa�bbb

mikekaganski

#3
У меня подозрение, что Вы случайно забыли написать "на Linux; Справка-О программе выдаёт вот что: ..." ;)

Попробуйте ЮНИСИМВ вместо СИМВОЛ. Последняя интерпретирует число как единицу кода (code unit) в текущей кодировке (на Linux - вероятно UTF-8, где отдельно 160 - это неполный символ). ЮНИСИМВ работает как Вам надо (выдаёт символ U+00A0).
С уважением,
Михаил Каганский

111

Спасибо!
ЮНИСИМВ работает.

sokol92

В дополнение ответа Михаила.
В Excel функция СИМВОЛ (CHAR) возвращает символ из кодовой страницы Windows по умолчанию. Соответственно в случае, если эта функция вызывается со значением аргумента от 128 до 255, то на компьютерах с другой кодовой страницей Windows по умолчанию мы увидим так называемые "кракозябры".
Вывод - используем эту функцию только для аргументов, не превосходящих 127 (или переходим на ЮНИСИМВ во всех случаях).
Владимир.

mikekaganski

Цитата: sokol92 от 22 ноября 2024, 14:47переходим на ЮНИСИМВ во всех случаях
Не забывая при этом менять параметр с числа, соответствующего кодовой странице Windows, на соответствующий код Unicode. В случае неразрывного пробела так уж получилось, что эти два значения совпали :)
С уважением,
Михаил Каганский

111