Protossan
@Protossan
студент

Как удалить � (знак вопроса в ромбе) из текста?

Как удалить из текста символ битого UTF символа, если этот символ уже таким дали. смена кодировки ничего не дает. str_replace, preg_replace не могу по символу сделать, так как при копировании из текста он меняется на просто квадрат
  • Вопрос задан
  • 2608 просмотров
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Для начала изучить текст и определить, а как собственно эти битые символы появились.

Если из-за того, что в некоторых местах текста между байтами символа был вставлен пробел - в таком случае можно просто удалить пробелы, которые располагаются там, где они в utf-8 невозможны (после 11xxxxxx или перед 10xxxxxx в двоичном представлении).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@oxidmod
В общем случая никак, так как под этим огрызком могут быть обломки разного утф символа
Ответ написан
@bbbcccc
Способ длинноватый, но простой и приемлемый для «почтичайников».
В тексте имеются символы «вопрос в черном ромбе» �. Удалить можно только вручную, по одному. Инструменты «найти» и «заменить» не помогают, они не видят этот символ. Применить макрос или код – не для всех. Вообще этот символ означает, что в исходном тексте были символы, отсутствующие в тексте с текущей кодировкой.
Создаем новый документ ворд, копируем в него символы, можно вместе с небольшим фрагментом текста, так, чтобы в будущем по положению в тексте можно было найти символ, даже если все будет заменено на абракодабру. Удобно повторить несколько символов в начале строки.
Сохраняем текст.
В настройках ворд на вкладке файл-параметры-дополнительно-группа «общие» (внизу) ставим птичку «подтверждать преобразование формата файла при открытии»
Сохраняем текст в txt. При нажатии «сохранить» появится окно «преобразование файла». По умолчанию стоит кодировка виндовс. Справа под окном кодировок будет предупреждение о том, что «текст, выделенный красным невозможно сохранить в выбранной кодировке». Ниже в окне образца, пролистав его увидите красные символы. Слева вверху три варианта кодировки. Ставим точку «Другая». Активируется окно кодировок. Находим кодировку, при которой символы в образце становятся некрасными, но текст читается. Мне помогла кодировка «Китайская упрощенная (GB 18030)». Юникод не помог, т.к. в будущем при замене инструмент «заменить» не увидел некоторых символов этой кодировки. Т.е. в китайской кодировке символы, заменившие � ромб совпали с виндовс (я так понимаю ANSI), а в Юникоде � ромб заменился на символы, часть которых отсутствует в кодировке виндовс. Жмем ОК.
Закрыть.
Открыть с помощью Ворд. При открытии в запросе выбрать обычный текст. Откроется абракодабра.
В абракодабре найти символ (скорее всего группу символов), соответствующие символу � ромб.
Инструментом «заменить» заменить найденные символы на какие-нибудь другие (потом моно будет просто менять).
Сохранить.
Закрыить.
Открыть с помощью ворд, выбрав опять кодировку «Китайская упрощенная (GB 18030)».
Сохранить как docx.
Может можно и проще. Смысл понятен. Проблема в разных символах в разных кодировках. Еще проще написать какой-нибудь код, но это не для массового пользователя.
Ответ написан
@ruslanyu
Evernotу ищет такие символы, через заменить вставляете что нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы