Conversione del codice C ++ in HTML sicuro
Domanda
Ho deciso di provare http://www.screwturn.eu/ wiki come archivio di frammenti di codice utilità. Finora sono rimasto molto colpito, ma ciò che mi infastidisce è che quando copio incolla il mio codice che voglio salvare, '& Lt;' s e '[' ( http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Character_references ) invariabilmente rovinano l'output mentre il wiki li interpreta come wiki o Tag HTML.
Qualcuno sa come aggirare questo? O in caso contrario, conosci una semplice utility che prenderebbe il codice C ++ e lo convertirà in codice HTML sicuro?
Soluzione
Circonda il tuo codice in < nowiki > .. < / nowiki > tag.
Altri suggerimenti
Puoi utilizzare il tag @@ ... @@ per sfuggire al codice e inserirlo automaticamente nei tag PRE .
Non conosco le utility, ma sono sicuro che potresti scrivere un'app molto semplice che trova / sostituisce. Per visualizzare le parentesi angolari, è sufficiente sostituirle rispettivamente con >
e <
. Per quanto riguarda le parentesi quadre, questo è un problema specifico della wiki con i methink markdown.
Dario Solera ha scritto " Puoi usare il tag @@ ... @@ per sfuggire al codice e inserirlo automaticamente nei tag PRE. "
Se non vuoi che sia avvolto, usa: <esc></esc>
Elenco di caratteri che devono essere salvati:
- lt &; (segno meno di) &
- amp; (E commerciale)
- [(parentesi quadra aperta)
Hai provato a racchiudere il tuo codice in tag html pre o code prima di incollarlo? Entrambi consentono l'uso di caratteri speciali (come '& Lt;') senza essere interpretati come html. pre onora anche la formattazione dei contenuti.
Esempio
<pre>
if (foo <= bar) {
do_something();
}
</pre>
Per pubblicare il codice C ++ su una pagina Web, è necessario prima convertirlo in HTML valido, che di solito richiede l'uso di entità di caratteri HTML , come altri hanno notato. Ciò non si limita alla sostituzione di <
e >
con <
e >
. Considera il seguente codice:
unsigned int maskedValue = value&mask;
Uh-oh, la DTD HTML contiene un'entità chiamata &mask;
? Meglio sostituire &
anche con &
.
Andando in una direzione alternativa, puoi sbarazzarti di [
e ]
sostituendoli con trigraphs ??(
e ??)
. In C ++, trigraphs e digraphs sono sequenze di caratteri che possono essere utilizzate per rappresentare caratteri specifici che non sono disponibili in tutti i set di caratteri. È improbabile che vengano riconosciuti dalla maggior parte dei programmatori C ++.