Index: src/event.c
===================================================================
--- src/event.c
+++ src/event.c
@@ -398,32 +398,32 @@
   @ <form method="post" action="%s(g.zTop)/eventedit"><div>
   login_insert_csrf_secret();
   @ <input type="hidden" name="name" value="%h(zEventId)" />
   @ <table border="0" cellspacing="10">
 
-  @ <tr><td align="right" valign="top"><b>Event&nbsp;Time:</b></td>
+  @ <tr><td align="right" valign="top"><b>Event&#160;Time:</b></td>
   @ <td valign="top">
   @   <input type="text" name="t" size="25" value="%h(zETime)" />
   @ </td></tr>
 
-  @ <tr><td align="right" valign="top"><b>Timeline&nbsp;Comment:</b></td>
+  @ <tr><td align="right" valign="top"><b>Timeline&#160;Comment:</b></td>
   @ <td valign="top">
   @ <textarea name="c" class="eventedit" cols="80" 
   @  rows="3" wrap="virtual">%h(zComment)</textarea>
   @ </td></tr>
 
-  @ <tr><td align="right" valign="top"><b>Background&nbsp;Color:</b></td>
+  @ <tr><td align="right" valign="top"><b>Background&#160;Color:</b></td>
   @ <td valign="top">
   render_color_chooser(0, zClr, 0, "clr", "cclr");
   @ </td></tr>
   
   @ <tr><td align="right" valign="top"><b>Tags:</b></td>
   @ <td valign="top">
   @   <input type="text" name="g" size="40" value="%h(zTags)" />
   @ </td></tr>
   
-  @ <tr><td align="right" valign="top"><b>Page&nbsp;Content:</b></td>
+  @ <tr><td align="right" valign="top"><b>Page&#160;Content:</b></td>
   @ <td valign="top">
   @ <textarea name="w" class="eventedit" cols="80" 
   @  rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
   @ </td></tr>
 

Index: src/info.c
===================================================================
--- src/info.c
+++ src/info.c
@@ -221,11 +221,11 @@
       }else{
         @ propagates to descendants
       }
 #if 0
       if( zValue && strcmp(zTagname,"branch")==0 ){
-        @ &nbsp;&nbsp;
+        @ &#160;&#160;
         @ <a href="%s(g.zTop)/timeline?r=%T(zValue)">branch timeline</a>
       }
 #endif
     }
     if( zSrcUuid && zSrcUuid[0] ){
@@ -320,11 +320,11 @@
     if( showDiff ){
       @ <blockquote><pre>
       append_diff(zOld, zNew);
       @ </pre></blockquote>
     }else if( zOld && zNew ){
-      @ &nbsp;&nbsp;
+      @ &#160;&#160;
       @ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&amp;v2=%S(zNew)">[diff]</a>
     }
     @ </p>
   }
 }
@@ -400,33 +400,33 @@
     zComment = db_column_text(&q, 3);
     zDate = db_column_text(&q,1);
     zOrigDate = db_column_text(&q, 4);
     @ <div class="section">Overview</div>
     @ <table class="label-value">
-    @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
+    @ <tr><th>SHA1&#160;Hash:</th><td>%s(zUuid)
     if( g.okSetup ){
       @ (Record ID: %d(rid))
     }
     @ </td></tr>
     @ <tr><th>Date:</th><td>
     hyperlink_to_date(zDate, "</td></tr>");
     if( zOrigDate && fossil_strcmp(zDate, zOrigDate)!=0 ){
-      @ <tr><th>Original&nbsp;Date:</th><td>
+      @ <tr><th>Original&#160;Date:</th><td>
       hyperlink_to_date(zOrigDate, "</td></tr>");
     }
     if( zEUser ){
-      @ <tr><th>Edited&nbsp;User:</th><td>
+      @ <tr><th>Edited&#160;User:</th><td>
       hyperlink_to_user(zEUser,zDate,"</td></tr>");
-      @ <tr><th>Original&nbsp;User:</th><td>
+      @ <tr><th>Original&#160;User:</th><td>
       hyperlink_to_user(zUser,zDate,"</td></tr>");
     }else{
       @ <tr><th>User:</th><td>
       hyperlink_to_user(zUser,zDate,"</td></tr>");
     }
     if( zEComment ){
-      @ <tr><th>Edited&nbsp;Comment:</th><td>%w(zEComment)</td></tr>
-      @ <tr><th>Original&nbsp;Comment:</th><td>%w(zComment)</td></tr>
+      @ <tr><th>Edited&#160;Comment:</th><td>%w(zEComment)</td></tr>
+      @ <tr><th>Original&#160;Comment:</th><td>%w(zComment)</td></tr>
     }else{
       @ <tr><th>Comment:</th><td>%w(zComment)</td></tr>
     }
     if( g.okAdmin ){
       db_prepare(&q, 
@@ -438,11 +438,11 @@
       if( db_step(&q)==SQLITE_ROW ){
         const char *zIpAddr = db_column_text(&q, 0);
         const char *zUser = db_column_text(&q, 1);
         const char *zDate = db_column_text(&q, 2);
         if( zUser==0 || zUser[0]==0 ) zUser = "unknown";
-        @ <tr><th>Received&nbsp;From:</th>
+        @ <tr><th>Received&#160;From:</th>
         @ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
       }
       db_finalize(&q);
     }
     if( g.okHistory ){
@@ -466,11 +466,11 @@
         const char *zTagName = db_column_text(&q, 0);
         @  | <a href="%s(g.zTop)/timeline?r=%T(zTagName)">%h(zTagName)</a>
       }
       db_finalize(&q);
       @ </td></tr>
-      @ <tr><th>Other&nbsp;Links:</th>
+      @ <tr><th>Other&#160;Links:</th>
       @   <td>
       @     <a href="%s(g.zTop)/dir?ci=%S(zUuid)">files</a>
       if( g.okZip ){
         char *zUrl = mprintf("%s/tarball/%s-%S.tar.gz?uuid=%s",
                              g.zTop, zProjName, zUuid, zUuid);
@@ -497,23 +497,23 @@
     @ <div class="section">Changes</div>
     showDiff = g.zPath[0]!='c';
     if( db_get_boolean("show-version-diffs", 0)==0 ){
       showDiff = !showDiff;
       if( showDiff ){
-        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[hide&nbsp;diffs]</a>
+        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[hide&#160;diffs]</a>
       }else{
-        @ <a href="%s(g.zTop)/ci/%T(zName)">[show&nbsp;diffs]</a>
+        @ <a href="%s(g.zTop)/ci/%T(zName)">[show&#160;diffs]</a>
       }
     }else{
       if( showDiff ){
-        @ <a href="%s(g.zTop)/ci/%T(zName)">[hide&nbsp;diffs]</a>
+        @ <a href="%s(g.zTop)/ci/%T(zName)">[hide&#160;diffs]</a>
       }else{
-        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&nbsp;diffs]</a>
+        @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&#160;diffs]</a>
       }
     }
-    @ &nbsp;&nbsp;
-    @ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&to=%S(zUuid)">[patch]</a><br/>
+    @ &#160;&#160;
+    @ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&amp;to=%S(zUuid)">[patch]</a><br/>
     db_prepare(&q,
        "SELECT name, mperm,"
        "       (SELECT uuid FROM blob WHERE rid=mlink.pid),"
        "       (SELECT uuid FROM blob WHERE rid=mlink.fid)"
        "  FROM mlink JOIN filename ON filename.fnid=mlink.fnid"
@@ -578,11 +578,11 @@
     @ <tr><th>Date:</th><td>
     hyperlink_to_date(zDate, "</td></tr>");
     if( g.okSetup ){
       @ <tr><th>Record ID:</th><td>%d(rid)</td></tr>
     }
-    @ <tr><th>Original&nbsp;User:</th><td>
+    @ <tr><th>Original&#160;User:</th><td>
     hyperlink_to_user(zUser, zDate, "</td></tr>");
     if( g.okHistory ){
       @ <tr><th>Commands:</th>
       @   <td>
       @     <a href="%s(g.zTop)/whistory?name=%t(zName)">history</a>
@@ -966,11 +966,11 @@
   text_diff(&c1, &c2, pOut, 4, 1);
   blob_reset(&c1);
   blob_reset(&c2);
   if( !isPatch ){
     style_header("Diff");
-    style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
+    style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&amp;v2=%T&amp;patch",
                           g.zTop, P("v1"), P("v2"));
     @ <h2>Differences From:</h2>
     @ <blockquote><p>
     object_description(v1, 1, 0);
     @ </p></blockquote>
@@ -1282,11 +1282,11 @@
         @ <pre>
         @ %h(z)
         @ </pre>
       }
     }else if( strncmp(zMime, "image/", 6)==0 ){
-      @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&amp;m=%s(zMime)"></img>
+      @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&amp;m=%s(zMime)" />
     }else{
       @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
     }
     @ </blockquote>
   }
@@ -1525,11 +1525,11 @@
   }else{
     @ <td style="background-color: %h(zDefaultColor);" colspan="6">
     @ <input type="radio" name="%s(zId)" value="%h(aColor[nColor].zColor)"
     @  checked="checked" />
   }
-  @ %h(aColor[i].zCName)&nbsp;
+  @ %h(aColor[i].zCName)&#160;
   @ <input type="text" name="%s(zIdCustom)"
   @  id="%s(zIdCustom)" class="checkinUserColor"
   @  value="%h(stdClrFound?"":zDefaultColor)" />
   @ </td>
   @ </tr>

Index: src/report.c
===================================================================
--- src/report.c
+++ src/report.c
@@ -58,11 +58,11 @@
     if( zTitle[0] == '_' ){
       blob_appendf(&ril, "%s", zTitle);
     } else {
       blob_appendf(&ril, "<a href=\"rptview?rn=%d\" rel=\"nofollow\">%h</a>", rn, zTitle);
     }
-    blob_appendf(&ril, "&nbsp;&nbsp;&nbsp;");
+    blob_appendf(&ril, "&#160;&#160;&#160;");
     if( g.okWrite && zOwner && zOwner[0] ){
       blob_appendf(&ril, "(by <i>%h</i></i>) ", zOwner);
     }
     if( g.okTktFmt ){
       blob_appendf(&ril, "[<a href=\"rptedit?rn=%d&amp;copy=1\" rel=\"nofollow\">copy</a>] ", rn);
@@ -664,11 +664,11 @@
     for(i=0; i<nArg; i++){
       char *zName = azName[i];
       if( i==pState->iBg ) continue;
       if( pState->iNewRow>=0 && i>=pState->iNewRow ){
         if( g.okWrite && zTid ){
-          @ <th>&nbsp;</th>
+          @ <th>&#160;</th>
           zTid = 0;
         }
         if( zName[0]=='_' ) zName++;
         @ </tr><tr><th colspan=%d(pState->nCol)>%h(zName)</th>
       }else{
@@ -677,11 +677,11 @@
         }
         @ <th>%h(zName)</th>
       }
     }
     if( g.okWrite && zTid ){
-      @ <th>&nbsp;</th>
+      @ <th>&#160;</th>
     }
     @ </tr>
   }
   if( azArg==0 ){
     @ <tr><td colspan="%d(pState->nCol)">
@@ -693,11 +693,11 @@
 
   /* Output the separator above each entry in a table which has multiple lines
   ** per database entry.
   */
   if( pState->iNewRow>=0 ){
-    @ <tr><td colspan=%d(pState->nCol)><font size=1>&nbsp;</font></td></tr>
+    @ <tr><td colspan=%d(pState->nCol)><font size=1>&#160;</font></td></tr>
   }
 
   /* Output the data for this entry from the database
   */
   zBg = pState->iBg>=0 ? azArg[pState->iBg] : 0;
@@ -728,11 +728,11 @@
         @ <td valign="top"><a href="tktview?name=%h(zData)">%h(zData)</a></td>
       }else{
         @ <td valign="top">%h(zData)</td>
       }
     }else if( zData[0]==0 ){
-      @ <td valign="top">&nbsp;</td>
+      @ <td valign="top">&#160;</td>
     }else{
       @ <td valign="top">
       @ %h(zData)
       @ </td>
     }

Index: src/setup.c
===================================================================
--- src/setup.c
+++ src/setup.c
@@ -118,13 +118,13 @@
   @ <table class="usetupLayoutTable">
   @ <tr><td class="usetupColumnLayout">
   @ <span class="note">Users:</span>
   @ <table class="usetupUserList">
   @ <tr>
-  @   <th class="usetupListUser" style="text-align: right;padding-right: 20px;">User&nbsp;ID</th>
+  @   <th class="usetupListUser" style="text-align: right;padding-right: 20px;">User&#160;ID</th>
   @   <th class="usetupListCap" style="text-align: center;padding-right: 15px;">Capabilities</th>
-  @   <th class="usetupListCon"  style="text-align: left;">Contact&nbsp;Info</th>
+  @   <th class="usetupListCon"  style="text-align: left;">Contact&#160;Info</th>
   @ </tr>
   db_prepare(&s, "SELECT uid, login, cap, info FROM user ORDER BY login");
   while( db_step(&s)==SQLITE_ROW ){
     const char *zCap = db_column_text(&s, 2);
     @ <tr>
@@ -497,11 +497,11 @@
   @ <tr>
   @   <td class="usetupEditLabel">Login:</td>
   @   <td><input type="text" name="login" value="%h(zLogin)" /></td>
   @ </tr>
   @ <tr>
-  @   <td class="usetupEditLabel">Contact&nbsp;Info:</td>
+  @   <td class="usetupEditLabel">Contact&#160;Info:</td>
   @   <td><input type="text" name="info" size="40" value="%h(zInfo)" /></td>
   @ </tr>
   @ <tr>
   @   <td class="usetupEditLabel">Capabilities:</td>
   @   <td>
@@ -554,11 +554,11 @@
     @ Apply changes to all repositories in the "<b>%h(zGroup)</b>"
     @ login group.</td></tr>
   }
   if( !higherUser ){
     @ <tr>
-    @   <td>&nbsp;</td>
+    @   <td>&#160;</td>
     @   <td><input type="submit" name="submit" value="Apply Changes" /></td>
     @ </tr>
   }
   @ </table>
   @ </div></form>

Index: src/shun.c
===================================================================
--- src/shun.c
+++ src/shun.c
@@ -233,11 +233,11 @@
   @
   @ <table cellpadding="0" cellspacing="0" border="0">
   @ <tr><th style="padding-right: 15px;text-align: right;">rcvid</th>
   @     <th style="padding-right: 15px;text-align: left;">Date</th>
   @     <th style="padding-right: 15px;text-align: left;">User</th>
-  @     <th style="text-align: left;">IP&nbsp;Address</th></tr>
+  @     <th style="text-align: left;">IP&#160;Address</th></tr>
   cnt = 0;
   while( db_step(&q)==SQLITE_ROW ){
     int rcvid = db_column_int(&q, 0);
     const char *zUser = db_column_text(&q, 1);
     const char *zDate = db_column_text(&q, 2);
@@ -289,11 +289,11 @@
     const char *zIpAddr = db_column_text(&q, 2);
     @ <tr><td valign="top" align="right"><b>User:</b></td>
     @ <td valign="top">%s(zUser)</td></tr>
     @ <tr><td valign="top" align="right"><b>Date:</b></td>
     @ <td valign="top">%s(zDate)</td></tr>
-    @ <tr><td valign="top" align="right"><b>IP&nbsp;Address:</b></td>
+    @ <tr><td valign="top" align="right"><b>IP&#160;Address:</b></td>
     @ <td valign="top">%s(zIpAddr)</td></tr>
   }
   db_finalize(&q);
   db_prepare(&q,
     "SELECT rid, uuid, size FROM blob WHERE rcvid=%d", rcvid

Index: src/skins.c
===================================================================
--- src/skins.c
+++ src/skins.c
@@ -163,11 +163,11 @@
 @       media="screen">
 @ </head>
 @ <body>
 @ <div class="header">
 @   <div class="logo">
-@     <img src="$home/logo" alt="logo">
+@     <img src="$home/logo" alt="logo" />
 @   </div>
 @   <div class="title"><small>$<project_name></small><br />$<title></div>
 @   <div class="status"><nobr><th1>
 @      if {[info exists login]} {
 @        puts "Logged in as $login"
@@ -597,11 +597,11 @@
 @       media="screen">
 @ </head>
 @ <body>
 @ <div class="header">
 @   <div class="logo">
-@     <img src="$home/logo" alt="logo">
+@     <img src="$home/logo" alt="logo" />
 @     <br /><nobr>$<project_name></nobr>
 @   </div>
 @   <div class="title">$<title></div>
 @   <div class="status"><nobr><th1>
 @      if {[info exists login]} {
@@ -891,11 +891,11 @@
 @       media="screen">
 @ </head>
 @ <body>
 @ <div class="header">
 @   <div class="logo">
-@     <img src="$home/logo" alt="logo">
+@     <img src="$home/logo" alt="logo" />
 @     <br /><nobr>$<project_name></nobr>
 @   </div>
 @   <div class="title">$<title></div>
 @   <div class="status"><nobr><th1>
 @      if {[info exists login]} {
@@ -1103,14 +1103,14 @@
   @ <h2>Available Skins:</h2>
   @ <ol>
   for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
     z = aBuiltinSkin[i].zName;
     if( strcmp(aBuiltinSkin[i].zValue, zCurrent)==0 ){
-      @ <li><p>%h(z).&nbsp;&nbsp; <b>Currently In Use</b></p>
+      @ <li><p>%h(z).&#160;&#160; <b>Currently In Use</b></p>
     }else{
       @ <li><form action="%s(g.zTop)/setup_skin" method="post"><div>
-      @ %h(z).&nbsp;&nbsp; 
+      @ %h(z).&#160;&#160; 
       @ <input type="hidden" name="sn" value="%h(z)" />
       @ <input type="submit" name="load" value="Use This Skin" />
       @ </div></form></li>
     }
   }
@@ -1121,14 +1121,14 @@
   );
   while( db_step(&q)==SQLITE_ROW ){
     const char *zN = db_column_text(&q, 0);
     const char *zV = db_column_text(&q, 1);
     if( strcmp(zV, zCurrent)==0 ){
-      @ <li><p>%h(zN).&nbsp;&nbsp;  <b>Currently In Use</b></p>
+      @ <li><p>%h(zN).&#160;&#160;  <b>Currently In Use</b></p>
     }else{
       @ <li><form action="%s(g.zTop)/setup_skin" method="post">
-      @ %h(zN).&nbsp;&nbsp; 
+      @ %h(zN).&#160;&#160; 
       @ <input type="hidden" name="sn" value="%h(zN)">
       @ <input type="submit" name="load" value="Use This Skin">
       @ <input type="submit" name="del1" value="Delete This Skin">
       @ </form></li>
     }

Index: src/stat.c
===================================================================
--- src/stat.c
+++ src/stat.c
@@ -36,24 +36,24 @@
 
   login_check_credentials();
   if( !g.okRead ){ login_needed(); return; }
   style_header("Repository Statistics");
   @ <table class="label-value">
-  @ <tr><th>Repository&nbsp;Size:</th><td>
+  @ <tr><th>Repository&#160;Size:</th><td>
   fsize = file_size(g.zRepositoryName);
   sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", fsize);
   @ %s(zBuf) bytes
   @ </td></tr>
-  @ <tr><th>Number&nbsp;Of&nbsp;Artifacts:</th><td>
+  @ <tr><th>Number&#160;Of&#160;Artifacts:</th><td>
   n = db_int(0, "SELECT count(*) FROM blob");
   m = db_int(0, "SELECT count(*) FROM delta");
   @ %d(n) (stored as %d(n-m) full text and %d(m) delta blobs)
   @ </td></tr>
   if( n>0 ){
     int a, b;
     Stmt q;
-    @ <tr><th>Uncompressed&nbsp;Artifact&nbsp;Size:</th><td>
+    @ <tr><th>Uncompressed&#160;Artifact&#160;Size:</th><td>
     db_prepare(&q, "SELECT total(size), avg(size), max(size)"
                    " FROM blob WHERE size>0");
     db_step(&q);
     t = db_column_int64(&q, 0);
     szAvg = db_column_int(&q, 1);
@@ -60,11 +60,11 @@
     szMax = db_column_int(&q, 2);
     db_finalize(&q);
     sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", t);
     @ %d(szAvg) bytes average, %d(szMax) bytes max, %s(zBuf) bytes total
     @ </td></tr>
-    @ <tr><th>Compression&nbsp;Ratio:</th><td>
+    @ <tr><th>Compression&#160;Ratio:</th><td>
     if( t/fsize < 5 ){
       b = 10;
       fsize /= 10;
     }else{
       b = 1;
@@ -71,52 +71,52 @@
     }
     a = t/fsize;
     @ %d(a):%d(b)
     @ </td></tr>
   }
-  @ <tr><th>Number&nbsp;Of&nbsp;Check-ins:</th><td>
+  @ <tr><th>Number&#160;Of&#160;Check-ins:</th><td>
   n = db_int(0, "SELECT count(distinct mid) FROM mlink /*scan*/");
   @ %d(n)
   @ </td></tr>
-  @ <tr><th>Number&nbsp;Of&nbsp;Files:</th><td>
+  @ <tr><th>Number&#160;Of&#160;Files:</th><td>
   n = db_int(0, "SELECT count(*) FROM filename /*scan*/");
   @ %d(n)
   @ </td></tr>
-  @ <tr><th>Number&nbsp;Of&nbsp;Wiki&nbsp;Pages:</th><td>
+  @ <tr><th>Number&#160;Of&#160;Wiki&#160;Pages:</th><td>
   n = db_int(0, "SELECT count(*) FROM tag  /*scan*/"
                 " WHERE +tagname GLOB 'wiki-*'");
   @ %d(n)
   @ </td></tr>
-  @ <tr><th>Number&nbsp;Of&nbsp;Tickets:</th><td>
+  @ <tr><th>Number&#160;Of&#160;Tickets:</th><td>
   n = db_int(0, "SELECT count(*) FROM tag  /*scan*/"
                 " WHERE +tagname GLOB 'tkt-*'");
   @ %d(n)
   @ </td></tr>
-  @ <tr><th>Duration&nbsp;Of&nbsp;Project:</th><td>
+  @ <tr><th>Duration&#160;Of&#160;Project:</th><td>
   n = db_int(0, "SELECT julianday('now') - (SELECT min(mtime) FROM event)"
                 " + 0.99");
   @ %d(n) days
   sqlite3_snprintf(sizeof(zBuf), zBuf, "%.2f", n/365.24);
   @ or approximately %s(zBuf) years
   @ </td></tr>
-  @ <tr><th>Project&nbsp;ID:</th><td>
+  @ <tr><th>Project&#160;ID:</th><td>
   @ %h(db_get("project-code",""))
   @ </td></tr>
-  @ <tr><th>Server&nbsp;ID:</th><td>
+  @ <tr><th>Server&#160;ID:</th><td>
   @ %h(db_get("server-code",""))
   @ </td></tr>
 
-  @ <tr><th>Fossil&nbsp;Version:</th><td>
+  @ <tr><th>Fossil&#160;Version:</th><td>
   @ %h(MANIFEST_DATE) %h(MANIFEST_VERSION) (%h(COMPILER_NAME))
   @ </td></tr>
-  @ <tr><th>SQLite&nbsp;Version:</th><td>
+  @ <tr><th>SQLite&#160;Version:</th><td>
   sqlite3_snprintf(sizeof(zBuf), zBuf, "%.19s [%.10s] (%s)",
                    SQLITE_SOURCE_ID, &SQLITE_SOURCE_ID[20], SQLITE_VERSION);
   zDb = db_name("repository");
   @ %s(zBuf)
   @ </td></tr>
-  @ <tr><th>Database&nbsp;Stats:</th><td>
+  @ <tr><th>Database&#160;Stats:</th><td>
   @ %d(db_int(0, "PRAGMA %s.page_count", zDb)) pages,
   @ %d(db_int(0, "PRAGMA %s.page_size", zDb)) bytes/page,
   @ %d(db_int(0, "PRAGMA %s.freelist_count", zDb)) free pages,
   @ %s(db_text(0, "PRAGMA %s.encoding", zDb)),
   @ %s(db_text(0, "PRAGMA %s.journal_mode", zDb)) mode

Index: src/th_main.c
===================================================================
--- src/th_main.c
+++ src/th_main.c
@@ -511,11 +511,11 @@
     }else{
       i++;
     }
   }
   if( rc==TH_ERROR ){
-    sendText("<hr><p class=\"thmainError\">ERROR: ", -1, 0);
+    sendText("<hr /><p class=\"thmainError\">ERROR: ", -1, 0);
     zResult = (char*)Th_GetResult(g.interp, &n);
     sendText((char*)zResult, n, 1);
     sendText("</p>", -1, 0);
   }else{
     sendText(z, i, 0);

Index: src/timeline.c
===================================================================
--- src/timeline.c
+++ src/timeline.c
@@ -161,11 +161,11 @@
   Blob comment;
   int prevTagid = 0;
   int suppressCnt = 0;
   char zPrevDate[20];
   GraphContext *pGraph = 0;
-  int prevWasDivider = 0;     /* True if previous output row was <hr> */
+  int prevWasDivider = 0;     /* True if previous output row was <hr /> */
   int fchngQueryInit = 0;     /* True if fchngQuery is initialized */
   Stmt fchngQuery;            /* Query for file changes on check-ins */
 
   zPrevDate[0] = 0;
   mxWikiLen = db_get_int("timeline-max-comment", 0);
@@ -301,11 +301,11 @@
     /* Generate the "user: USERNAME" at the end of the comment, together
     ** with a hyperlink to another timeline for that user.
     */
     if( zTagList && zTagList[0]==0 ) zTagList = 0;
     if( g.okHistory && fossil_strcmp(zUser, zThisUser)!=0 ){
-      char *zLink = mprintf("%s/timeline?u=%h&c=%t&nd",
+      char *zLink = mprintf("%s/timeline?u=%h&amp;c=%t&amp;nd",
                             g.zTop, zUser, zDate);
       @ (user: <a href="%s(zLink)">%h(zUser)</a>%s(zTagList?",":"\051")
       fossil_free(zLink);
     }else{
       @ (user: %h(zUser)%s(zTagList?",":"\051")
@@ -322,11 +322,11 @@
         blob_zero(&links);
         while( z && z[0] ){
           for(i=0; z[i] && (z[i]!=',' || z[i+1]!=' '); i++){}
           if( zThisTag==0 || memcmp(z, zThisTag, i)!=0 || zThisTag[i]!=0 ){
             blob_appendf(&links,
-                  "<a href=\"%s/timeline?r=%.*t&nd&c=%s\">%.*h</a>%.2s",
+                  "<a href=\"%s/timeline?r=%.*t&amp;nd&amp;c=%s\">%.*h</a>%.2s",
                   g.zTop, i, z, zDate, i, z, &z[i]
             );
           }else{
             blob_appendf(&links, "%.*h", i+2, z);
           }
@@ -371,18 +371,18 @@
         if( !inUl ){
           @ <ul class="filelist">
           inUl = 1;
         }
         if( isNew ){
-          @ <li> %h(zFilename) (new file) &nbsp;
+          @ <li> %h(zFilename) (new file) &#160;
           @ <a href="%s(g.zTop)/artifact/%S(zNew)" target="diffwindow">[view]
           @ </a></li>
         }else if( isDel ){
           @ <li> %h(zFilename) (deleted)</li>
         }else{
-          @ <li> %h(zFilename) &nbsp;
-          @ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&v2=%S(zNew)"
+          @ <li> %h(zFilename) &#160;
+          @ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&amp;v2=%S(zNew)"
           @ target="diffwindow">[diff]</a></li>
         }
       }
       db_reset(&fchngQuery);
       if( inUl ){
@@ -741,11 +741,11 @@
 }
 
 
 /*
 ** zDate is a localtime date.  Insert records into the
-** "timeline" table to cause <hr> to be inserted before and after
+** "timeline" table to cause <hr /> to be inserted before and after
 ** entries of that date.  If zDate==NULL then put dividers around
 ** the event identified by rid.
 */
 static void timeline_add_dividers(const char *zDate, int rid){
   char *zToDel = 0;

Index: src/tktsetup.c
===================================================================
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -354,11 +354,11 @@
   );
 }
 
 static const char zDefaultView[] =
 @ <table cellpadding="5">
-@ <tr><td class="tktDspLabel">Ticket&nbsp;UUID:</td>
+@ <tr><td class="tktDspLabel">Ticket&#160;UUID:</td>
 @ <td class="tktDspValue" colspan="3">$<tkt_uuid></td></tr>
 @ <tr><td class="tktDspLabel">Title:</td>
 @ <td class="tktDspValue" colspan="3">
 @ <th1>wiki $title</th1>
 @ </td></tr>
@@ -378,20 +378,20 @@
 @ $<subsystem>
 @ </td>
 @ <td class="tktDspLabel">Resolution:</td><td class="tktDspValue">
 @ $<resolution>
 @ </td></tr>
-@ <tr><td class="tktDspLabel">Last&nbsp;Modified:</td><td class="tktDspValue">
+@ <tr><td class="tktDspLabel">Last&#160;Modified:</td><td class="tktDspValue">
 @ $<tkt_datetime>
 @ </td>
 @ <th1>enable_output [hascap e]</th1>
 @   <td class="tktDspLabel">Contact:</td><td class="tktDspValue">
 @   $<private_contact>
 @   </td>
 @ <th1>enable_output 1</th1>
 @ </tr>
-@ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td>
+@ <tr><td class="tktDspLabel">Version&#160;Found&#160;In:</td>
 @ <td colspan="3" valign="top" class="tktDspValue">
 @ $<foundin>
 @ </td></tr>
 @ <tr><td>Description &amp; Comments:</td></tr>
 @ <tr><td colspan="4" class="tktDspValue">
@@ -469,11 +469,11 @@
 @   <tr><td class="tktDspLabel">Contact:</td><td>
 @   <input type="text" name="private_contact" size="40"
 @    value="$<private_contact>" />
 @   </td></tr>
 @ <th1>enable_output 1</th1>
-@ <tr><td class="tktDspLabel">Version&nbsp;Found&nbsp;In:</td><td>
+@ <tr><td class="tktDspLabel">Version&#160;Found&#160;In:</td><td>
 @ <input type="text" name="foundin" size="50" value="$<foundin>" />
 @ </td></tr>
 @ <tr><td colspan="2">
 @ <th1>
 @   if {![info exists eall]} {set eall 0}

Index: src/user.c
===================================================================
--- src/user.c
+++ src/user.c
@@ -425,11 +425,11 @@
     blob_append(&sql, "  WHERE NOT success", -1);
   }
   blob_appendf(&sql,"  ORDER BY rowid DESC LIMIT %d OFFSET %d", n+1, skip);
   if( skip ){
     style_submenu_element("Newer", "Newer entries",
-              "%s/access_log?o=%d&n=%d&y=%d", g.zTop, skip>=n ? skip-n : 0,
+              "%s/access_log?o=%d&amp;n=%d&amp;y=%d", g.zTop, skip>=n ? skip-n : 0,
               n, y);
   }
   rc = db_prepare_ignore_error(&q, blob_str(&sql));
   @ <center><table border="1" cellpadding="5">
   @ <tr><th width="33%%">Date</th><th width="34%%">User</th>
@@ -440,11 +440,11 @@
     const char *zDate = db_column_text(&q, 2);
     int bSuccess = db_column_int(&q, 3);
     cnt++;
     if( cnt>n ){
       style_submenu_element("Older", "Older entries",
-                  "%s/access_log?o=%d&n=%d&y=%d", g.zTop, skip+n, n, y);
+                  "%s/access_log?o=%d&amp;n=%d&amp;y=%d", g.zTop, skip+n, n, y);
       break;
     }
     if( bSuccess ){
       @ <tr>
     }else{
@@ -456,11 +456,11 @@
     style_submenu_element("All", "All entries",
           "%s/access_log?n=10000000", g.zTop);
   }
   @ </table></center>
   db_finalize(&q);
-  @ <hr>
+  @ <hr />
   @ <form method="post" action="%s(g.zTop)/access_log">
   @ <input type="checkbox" name="delold">
   @ Delete all but the most recent 200 entries</input>
   @ <input type="submit" name="deloldbtn" value="Delete"></input>
   @ </form>

Index: src/wiki.c
===================================================================
--- src/wiki.c
+++ src/wiki.c
@@ -162,11 +162,11 @@
     }
     @ <li> <a href="%s(g.zTop)/wcontent">List of All Wiki Pages</a>
     @      available on this server.</li>
     @ <li> <form method="get" action="%s(g.zTop)/wfind"><div>
     @     Search wiki titles: <input type="text" name="title"/>
-    @  &nbsp; <input type="submit" /></div></form>
+    @  &#160; <input type="submit" /></div></form>
     @ </li>
     @ </ul>
     style_footer();
     return;
   }
@@ -411,11 +411,11 @@
   const char *zRemark;
   char *zId;
 
   zDate = db_text(0, "SELECT datetime('now')");
   zId = db_text(0, "SELECT lower(hex(randomblob(8)))");
-  blob_appendf(p, "\n\n<hr><div id=\"%s\"><i>On %s UTC %h", 
+  blob_appendf(p, "\n\n<hr /><div id=\"%s\"><i>On %s UTC %h", 
     zId, zDate, g.zLogin);
   free(zDate);
   zUser = PD("u",g.zLogin);
   if( zUser[0] && strcmp(zUser,g.zLogin) ){
     blob_appendf(p, " (claiming to be %h)", zUser);
@@ -512,13 +512,13 @@
   style_header(zHtmlPageName);
   if( P("preview")!=0 ){
     Blob preview;
     blob_zero(&preview);
     appendRemark(&preview);
-    @ Preview:<hr>
+    @ Preview:<hr />
     wiki_convert(&preview, 0, 0);
-    @ <hr>
+    @ <hr />
     blob_reset(&preview);
   }
   zUser = PD("u", g.zLogin);
   @ <form method="post" action="%s(g.zTop)/wikiappend">
   login_insert_csrf_secret();

Index: src/wikiformat.c
===================================================================
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1157,11 +1157,11 @@
     p->state &= ~(AT_NEWLINE|AT_PARAGRAPH);
     switch( tokenType ){
       case TOKEN_PARAGRAPH: {
         if( inlineOnly ){
           /* blob_append(p->pOut, " &para; ", -1); */
-          blob_append(p->pOut, " &nbsp;&nbsp; ", -1);
+          blob_append(p->pOut, " &#160;&#160; ", -1);
         }else{
           if( p->wikiList ){
             popStackToTag(p, p->wikiList);
             p->wikiList = 0;
           }

