Безопасное преобразование кода C++ в HTML
Вопрос
Я решил попробовать http://www.screwturn.eu/ wiki как утилита для хранения фрагментов кода.Пока что я очень впечатлен, но меня раздражает то, что когда я копирую и вставляю свой код, который хочу сохранить, '<' и '[' (http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Character_references) неизменно портят выходные данные, поскольку вики интерпретирует их как вики-теги или HTML-теги.
Кто-нибудь знает способ обойти это?Или, если это не удастся, знаете простую утилиту, которая принимает код C++ и преобразует его в безопасный код HTML?
Решение
Окружите свой код <nowiki>..Теги </новики>.
Другие советы
Вы можете использовать @@...@@ тег, чтобы экранировать код и автоматически обернуть его ПРЕДВАРИТЕЛЬНО теги.
Я не разбираюсь в утилитах, но уверен, что вы могли бы написать очень простое приложение, выполняющее поиск/замену.Для отображения угловых скобок достаточно заменить их на >
и <
соответственно.Что касается квадратных скобок, то, по-моему, это специфическая проблема вики с уценкой.
Дарио Солера написал: «Вы можете использовать тег @@...@@, чтобы экранировать код и автоматически обернуть его тегами PRE».
Если вы не хотите, чтобы он был завернут, просто используйте: <esc></esc>
Список символов, которые нужно экранировать:
- < (знак меньше чем)
- & (амперсанд)
- [ (открывающая квадратная скобка)
Пробовали ли вы обернуть свой код в HTML-теги pre или code перед вставкой?Оба позволяют использовать любые специальные символы (например, '<'), не интерпретируя их как html.pre также учитывает форматирование содержимого.
пример
<pre>
if (foo <= bar) {
do_something();
}
</pre>
Чтобы разместить код C++ на веб-странице, вам следует сначала преобразовать его в действительный HTML, что обычно требует использования HTML-символы, как отмечали другие.Это не ограничивается заменой <
и >
с <
и >
.Рассмотрим следующий код:
unsigned int maskedValue = value&mask;
Ой-ой, а HTML DTD содержит объект под названием &mask;
?Лучше заменить &
с &
также.
Двигаясь в альтернативном направлении, можно избавиться от [
и ]
заменив их на триграфы ??(
и ??)
.В C++ триграфы и орграфы — это последовательности символов, которые можно использовать для представления определенных символов, доступных не во всех наборах символов.Однако они вряд ли будут распознаны большинством программистов C++.