Um mal deine Frage im Titel zu beantworten: UTF-8 ist das heutige Encoding der Wahl. Das betrifft sowohl deine HTML-Dateien als auch das im Response-Header sowie im entsprechenden `<meta>`-Tag gesetzte Encoding (`Content-Type: foo/bar; charset=utf-8`). Idealerweise steht dieser Meta-Tag auch ganz oben im `<head>`-Block, da der Browser sonst unnötig viel parst, bevor er an dieser Stelle wieder zum Anfang springt und das dort angegebene Encoding berücksichtigt.
Java o.Ä. fällt leider raus, da ich sonst keinerlei Programmierkenntnisse hab.
Das macht nichts. Java hat IMHO auf Websites heutzutage gar nichts mehr verloren. Programmieren können kannst du serverseitig sowie mit JavaScript auf Clientseite.
Nehme ich einen Hauptcontainer und packe dort eine oder mehrere Tabelle rein, oder mehrere Container und entsprechend Tabelle(n) rein?.
Es soll ne kleine Webseite werden, ein dauerhaftes Menü, evt mit öffnenden Untermenü, und evt noch einen Banner oben.
Layouts mit CSS statt mit "blinden" Tabellen demonstriert z.B.
Glish. Die Navigation wird idealerweise als geordnete Liste (`<ol>`) ausgezeichnet (weil sie genau das ist) und nach Belieben mit CSS angepasst (s.
Taming Lists.
Um eine statische Navigation auf mehreren Seiten zu erhalten, bedient man sich in der Tat nicht mehr Frames, dafür aber serverseitiger Mittel (z.B. ein
einfaches Startkit aus meiner Feder). Die (vermeintliche) Alternative, der sich auch Dreamweaver und Kollegen biedient, besteht darin, diesen Prozess vor dem Uploaden auszuführen, d.h. beim "Veröffentlichen" werden die Inhaltsseiten um die einheitlichen Teile (Layout, Kopf, Fuß, Navigation, evtl. Sidebar etc.) ergänzt und dann direkt mit in die HTML-Dateien geschrieben, die man hochlädt. Nachteil: Ändert man etwas allgemeines, müssen *alle* Dateien neu erzeugt und hochgeladen werden. Uncool und fehlerträchtig. PHP sollte dein Webspace anbieten, daher empfehle ich dir die vorige Variante.
Ich bin ja auch nicht der Profi, aber soweit ich mich eingelesen habe schachtelt man DIV-Container ineinander und verzichtet so weit wie möglich völlig auf Tabellen.
Idealerweise verwendet man so wenige `<div>`s wie möglich und bedient sich semantisch passender Container (Absätze, Listen, Blockzitate, Links mit `display: block;`, Formularelementen wie `<fieldset>` usw.). Ansonsten gibt's die "div-Hell", die letztlich den Inhalt mit eigentlich nicht angebrachtem Markup aufbläht.
Tabellen und JavaScript wird so gut wie gar nicht mehr benutzt, wirklich nur noch an Stellen, an denen es unbedingt nötig ist.
Der Rest ist alles XHTML + CSS.
Tabellen sind, wie Limbachnet schon anmerkte, für tabellarische Daten nach wie vor das richtige Werkzeug (insbesondere im Hinblick auf Screenreader-Verhalten) - nur eben nicht fürs Layouten. JavaScript hat eine Renaissance erlebt und ist durch AJAX präsenter denn je. Ganz gravierende Fehler wie Navigationen, die nur bei aktiviertem JavaScript funktionieren, sind natürlich zu vermeiden. Wenn die Anwendung kein AJAX benötigt, sollte sie ohne JavaScript komplett benutzbar sein. Weitere Ansätze nutzen JavaScript für automatische Layout-Anpassungen - etwas, von dem ich persönlich wenig halte, aber z.B. zum Erzielen abgerundeter Ecken irgendwie immer noch besser als das Markup an vielen Stellen enorm aufzublasen.