diff --git a/src/attributes/seenspell.c b/src/attributes/seenspell.c
index 082eecc6b..e20976015 100644
--- a/src/attributes/seenspell.c
+++ b/src/attributes/seenspell.c
@@ -39,9 +39,9 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 /* ------------------------------------------------------------- */
 /* Ausgabe der Spruchbeschreibungen
  * Anzeige des Spruchs nur, wenn die Stufe des besten Magiers vorher
- * kleiner war (u->faction->seenspells). Ansonsten muss nur geprüft
+ * kleiner war (u->faction->seenspells). Ansonsten muss nur geprueft
  * werden, ob dieser Magier den Spruch schon kennt, und andernfalls der
- * Spruch zu seiner List-of-known-spells hinzugefügt werden.
+ * Spruch zu seiner List-of-known-spells hinzugefuegt werden.
  */
 
 static int read_seenspells(variant *var, void *owner, struct gamedata *data)
diff --git a/src/battle.c b/src/battle.c
index df937698f..311cda7e3 100644
--- a/src/battle.c
+++ b/src/battle.c
@@ -303,11 +303,11 @@ static int dead_fighters(const fighter * df)
 }
 
 fighter *select_corpse(battle * b, fighter * af)
-/* W�hlt eine Leiche aus, der af hilft. casualties ist die Anzahl der
+/* Waehlt eine Leiche aus, der af hilft. casualties ist die Anzahl der
  * Toten auf allen Seiten (im Array). Wenn af == NULL, wird die
- * Parteizugeh�rigkeit ignoriert, und irgendeine Leiche genommen.
+ * Parteizugehoerigkeit ignoriert, und irgendeine Leiche genommen.
  *
- * Untote werden nicht ausgew�hlt (casualties, not dead) */
+ * Untote werden nicht ausgewaehlt (casualties, not dead) */
 {
     int si, maxcasualties = 0;
     fighter *df;
@@ -323,7 +323,7 @@ fighter *select_corpse(battle * b, fighter * af)
         side *s;
         for (s = b->sides; s != b->sides + b->nsides; ++s) {
             for (df = s->fighters; df; df = df->next) {
-                /* Geflohene haben auch 0 hp, d�rfen hier aber nicht ausgew�hlt
+                /* Geflohene haben auch 0 hp, duerfen hier aber nicht ausgewaehlt
                  * werden! */
                 int dead = dead_fighters(df);
                 if (!playerrace(u_race(df->unit)))
@@ -731,16 +731,16 @@ weapon_effskill(troop t, troop enemy, const weapon * w,
 
         if (t.index < tf->elvenhorses) {
             /* Elfenpferde: Helfen dem Reiter, egal ob und welche Waffe. Das ist
-             * eleganter, und vor allem einfacher, sonst mu� man noch ein
+             * eleganter, und vor allem einfacher, sonst muss man noch ein
              * WMF_ELVENHORSE einbauen. */
             skill += 2;
         }
 
         if (skill > 0 && !attacking && missile) {
             /*
-             * Wenn ich verteidige, und nicht direkt meinem Feind gegen�berstehe,
-             * halbiert sich mein Skill: (z.B. gegen Fernk�mpfer. Nahk�mpfer
-             * k�nnen mich eh nicht treffen)
+             * Wenn ich verteidige, und nicht direkt meinem Feind gegenueberstehe,
+             * halbiert sich mein Skill: (z.B. gegen Fernkaempfer. Nahkaempfer
+             * koennen mich eh nicht treffen)
              */
             skill /= 2;
         }
@@ -779,9 +779,9 @@ const armor_type *select_armor(troop t, bool shield)
 }
 
 /* Hier ist zu beachten, ob und wie sich Zauber und Artefakte, die
- * R�stungschutz geben, addieren.
- * - Artefakt "trollbelt" gibt R�stung +1
- * - Zauber Rindenhaut gibt R�stung +3
+ * Ruestungschutz geben, addieren.
+ * - Artefakt "trollbelt" gibt Ruestung +1
+ * - Zauber Rindenhaut gibt Ruestung +3
  */
 static int trollbelts(const unit *u) {
     const struct resource_type *belt = rt_find("trollbelt");
@@ -799,7 +799,7 @@ int select_magicarmor(troop t)
     return ma;
 }
 
-/* Sind side ds und Magier des meffect verb�ndet, dann return 1*/
+/* Sind side ds und Magier des meffect verbuendet, dann return 1*/
 bool meffect_protection(battle * b, meffect * s, side * ds)
 {
     UNUSED_ARG(b);
@@ -837,7 +837,7 @@ void rmfighter(fighter * df, int i)
     assert(df->alive >= i);
     assert(df->alive <= df->unit->number);
 
-    /* erst ziehen wir die Anzahl der Personen von den K�mpfern in der
+    /* erst ziehen wir die Anzahl der Personen von den Kaempfern in der
      * Schlacht, dann von denen auf dieser Seite ab*/
     df->side->alive -= i;
     df->side->battle->alive -= i;
@@ -1031,15 +1031,15 @@ int calculate_armor(troop dt, const weapon_type *dwtype, const weapon_type *awty
       total_armor = 0;
     }
 
-    /* nat�rliche R�stung */
+    /* natuerliche Ruestung */
     nat_armor = natural_armor(du);
 
-    /* magische R�stung durch Artefakte oder Spr�che */
-    /* Momentan nur Trollg�rtel und Werwolf-Eigenschaft */
+    /* magische Ruestung durch Artefakte oder Sprueche */
+    /* Momentan nur Trollguertel und Werwolf-Eigenschaft */
     magic_armor = select_magicarmor(dt);
 
     if (rule_nat_armor == 0) {
-        /* nat�rliche R�stung ist halbkumulativ */
+        /* natuerliche Ruestung ist halbkumulativ */
         if (total_armor > 0) {
             total_armor += nat_armor / 2;
         }
@@ -1124,7 +1124,7 @@ static bool survives(fighter *af, troop dt, battle *b) {
     const unit *du = af->unit;
     const fighter *df = dt.fighter;
 
-    if (df->person[dt.index].hp > 0) {    /* Hat �berlebt */
+    if (df->person[dt.index].hp > 0) {    /* Hat ueberlebt */
         demon_dazzle(af, dt);
 
         return true;
@@ -1261,7 +1261,7 @@ static int apply_magicshield(int reduced_damage, fighter *df,
                 reduced_damage -= hp;
                 me->duration -= hp;
             }
-            /* gibt R�stung +effect f�r duration Treffer */
+            /* gibt Ruestung +effect fuer duration Treffer */
             if (me->typ == SHIELD_ARMOR) {
                 reduced_damage -= me->effect;
                 if (reduced_damage < 0) reduced_damage = 0;
@@ -1743,7 +1743,7 @@ void do_combatmagic(battle * b, combatmagic_t was)
             unit *caster = mage;
 
             if (fig->alive <= 0)
-                continue;               /* fighter kann im Kampf get�tet worden sein */
+                continue;               /* fighter kann im Kampf getoetet worden sein */
 
             level = effskill(mage, SK_MAGIC, r);
             if (level > 0) {
@@ -1847,12 +1847,12 @@ static void do_combatspell(troop at)
 
     sp = get_combatspell(mage, 1);
     if (sp == NULL) {
-        fi->magic = 0;              /* Hat keinen Kampfzauber, k�mpft nichtmagisch weiter */
+        fi->magic = 0;              /* Hat keinen Kampfzauber, kaempft nichtmagisch weiter */
         return;
     }
     ord = create_order(K_CAST, lang, "'%s'", spell_name(sp, lang));
     if (!cancast(mage, sp, 1, 1, ord)) {
-        fi->magic = 0;              /* Kann nicht mehr Zaubern, k�mpft nichtmagisch weiter */
+        fi->magic = 0;              /* Kann nicht mehr Zaubern, kaempft nichtmagisch weiter */
         return;
     }
 
@@ -1878,7 +1878,7 @@ static void do_combatspell(troop at)
         }
     }
 
-    /* Antimagie die Fehlschlag erh�ht */
+    /* Antimagie die Fehlschlag erhoeht */
     if (rng_int() % 100 < fumblechance) {
         report_failed_spell(b, mage, sp);
         pay_spell(mage, NULL, sp, level, 1);
@@ -1897,7 +1897,7 @@ static void do_combatspell(troop at)
 }
 
 /* Sonderattacken: Monster patzern nicht und zahlen auch keine
- * Spruchkosten. Da die Spruchst�rke direkt durch den Level bestimmt
+ * Spruchkosten. Da die Spruchstaerke direkt durch den Level bestimmt
  * wird, wirkt auch keine Antimagie (wird sonst in spellpower
  * gemacht) */
 
@@ -1948,7 +1948,7 @@ int skilldiff(troop at, troop dt, int dist)
         if (b->attribs) {
             curse *c = get_curse(b->attribs, &ct_strongwall);
             if (curse_active(c)) {
-                /* wirkt auf alle Geb�ude */
+                /* wirkt auf alle Gebaeude */
                 skdiff -= curse_geteffect_int(c);
                 is_protected = 2;
             }
@@ -2037,7 +2037,7 @@ int hits(troop at, troop dt, weapon * awp)
     }
 
     skdiff = skilldiff(at, dt, dist);
-    /* Verteidiger bekommt eine R�stung */
+    /* Verteidiger bekommt eine Ruestung */
     armor = select_armor(dt, true);
     if (dwp == NULL || (dwp->type->flags & WTF_USESHIELD)) {
         shield = select_armor(dt, false);
@@ -2066,7 +2066,7 @@ void damage_building(battle * b, building * bldg, int damage_abs)
     bldg->size -= damage_abs;
     if (bldg->size < 1) bldg->size = 1;
 
-    /* Wenn Burg, dann gucken, ob die Leute alle noch in das Geb�ude passen. */
+    /* Wenn Burg, dann gucken, ob die Leute alle noch in das Gebaeude passen. */
 
     if (bldg->type->flags & BTF_FORTIFICATION) {
         side *s;
@@ -2124,7 +2124,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
     switch (a->type) {
     case AT_COMBATSPELL:
         /* Magier versuchen immer erstmal zu zaubern, erst wenn das
-         * fehlschl�gt, wird af->magic == 0 und  der Magier k�mpft
+         * fehlschlaegt, wird af->magic == 0 und  der Magier kaempft
          * konventionell weiter */
         if (numattack == 0 && af->magic > 0) {
             /* wenn der magier in die potenzielle Reichweite von Attacken des
@@ -2136,7 +2136,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
             }
         }
         break;
-    case AT_STANDARD:          /* Waffen, mag. Gegenst�nde, Kampfzauber */
+    case AT_STANDARD:          /* Waffen, mag. Gegenstaende, Kampfzauber */
         if (numattack > 0 || af->magic <= 0) {
             weapon *wp = ta.fighter->person[ta.index].missile;
             int melee =
@@ -2153,7 +2153,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
                 bool standard_attack = true;
                 bool reload = false;
                 /* spezialattacken der waffe nur, wenn erste attacke in der runde.
-                 * sonst helden mit feuerschwertern zu m�chtig */
+                 * sonst helden mit feuerschwertern zu maechtig */
                 if (numattack == 0 && wp && wp->type->attack) {
                     int dead = 0;
                     standard_attack = wp->type->attack(&ta, wp->type, &dead);
@@ -2197,7 +2197,7 @@ static void attack(battle * b, troop ta, const att * a, int numattack)
             }
         }
         break;
-    case AT_SPELL:             /* Extra-Spr�che. Kampfzauber in AT_COMBATSPELL! */
+    case AT_SPELL:             /* Extra-Sprueche. Kampfzauber in AT_COMBATSPELL! */
         do_extra_spell(ta, a);
         break;
     case AT_NATURAL:
@@ -2282,14 +2282,14 @@ void do_attack(fighter * af)
 
     assert(au && au->number);
     /* Da das Zuschlagen auf Einheiten und nicht auf den einzelnen
-     * K�mpfern beruht, darf die Reihenfolge und Gr��e der Einheit keine
+     * Kaempfern beruht, darf die Reihenfolge und Groesse der Einheit keine
      * Rolle spielen, Das tut sie nur dann, wenn jeder, der am Anfang der
-     * Runde lebte, auch zuschlagen darf. Ansonsten ist der, der zuf�llig
-     * mit einer gro�en Einheit zuerst drankommt, extrem bevorteilt. */
+     * Runde lebte, auch zuschlagen darf. Ansonsten ist der, der zufaellig
+     * mit einer grossen Einheit zuerst drankommt, extrem bevorteilt. */
     ta.index = af->fighting;
 
     while (ta.index--) {
-        /* Wir suchen eine beliebige Feind-Einheit aus. An der k�nnen
+        /* Wir suchen eine beliebige Feind-Einheit aus. An der koennen
          * wir feststellen, ob noch jemand da ist. */
         int apr, attacks = attacks_per_round(ta);
         if (!count_enemies(b, af, FIGHT_ROW, LAST_ROW, SELECT_FIND))
@@ -2314,7 +2314,7 @@ void do_attack(fighter * af)
             }
         }
     }
-    /* Der letzte Katapultsch�tze setzt die
+    /* Der letzte Katapultschuetze setzt die
      * Ladezeit neu und generiert die Meldung. */
     if (af->catmsg >= 0) {
         struct message *m =
@@ -2372,7 +2372,7 @@ static int horse_fleeing_bonus(const unit * u)
 static int fleechance(unit * u)
 {
     int p = flee_chance_base;              /* Fluchtwahrscheinlichkeit in % */
-    /* Einheit u versucht, dem Get�mmel zu entkommen */
+    /* Einheit u versucht, dem Getuemmel zu entkommen */
 
     p += (effskill(u, SK_STEALTH, NULL) * flee_chance_skill_bonus);
     p += horse_fleeing_bonus(u);
@@ -2660,7 +2660,7 @@ static void aftermath(battle * b)
     for (s = b->sides; s != b->sides + b->nsides; ++s) {
         int snumber = 0;
         fighter *df;
-        bool relevant = false;   /* Kampf relevant f�r diese Partei? */
+        bool relevant = false;   /* Kampf relevant fuer diese Partei? */
         if (!fval(s, SIDE_HASGUARDS)) {
             relevant = true;
         }
@@ -2700,7 +2700,7 @@ static void aftermath(battle * b)
                     /* Report the casualties */
                     reportcasualties(b, df, dead);
 
-                    /* Zuerst d�rfen die Feinde pl�ndern, die mitgenommenen Items
+                    /* Zuerst duerfen die Feinde pluendern, die mitgenommenen Items
                      * stehen in fig->run.items. Dann werden die Fliehenden auf
                      * die leere (tote) alte Einheit gemapt */
                     if (!fval(df, FIG_NOLOOT)) {
@@ -2735,7 +2735,7 @@ static void aftermath(battle * b)
             }
             else {
                 if (df->alive == 0) {
-                    /* alle sind tot, niemand geflohen. Einheit aufl�sen */
+                    /* alle sind tot, niemand geflohen. Einheit aufloesen */
                     df->run.number = 0;
                     df->run.hp = 0;
 
@@ -2797,7 +2797,7 @@ static void aftermath(battle * b)
 
     /* Wir benutzen drifted, um uns zu merken, ob ein Schiff
      * schonmal Schaden genommen hat. (moved und drifted
-     * sollten in flags �berf�hrt werden */
+     * sollten in flags ueberfuehrt werden */
 
     for (s = b->sides; s != b->sides + b->nsides; ++s) {
         fighter *df;
@@ -2818,7 +2818,7 @@ static void aftermath(battle * b)
             }
 
             /* Wenn sich die Einheit auf einem Schiff befindet, wird
-             * dieses Schiff besch�digt. Andernfalls ein Schiff, welches
+             * dieses Schiff beschaedigt. Andernfalls ein Schiff, welches
              * evt. zuvor verlassen wurde. */
             if (ships_damaged) {
                 ship *sh;
@@ -3114,8 +3114,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
         else if (!stealthfaction) {
             s1->stealthfaction = NULL;
         }
-        /* Zu diesem Zeitpunkt ist attacked noch 0, da die Einheit f�r noch
-         * keinen Kampf ausgew�hlt wurde (sonst w�rde ein fighter existieren) */
+        /* Zu diesem Zeitpunkt ist attacked noch 0, da die Einheit fuer noch
+         * keinen Kampf ausgewaehlt wurde (sonst wuerde ein fighter existieren) */
     }
     fig = (struct fighter*)calloc(1, sizeof(struct fighter));
 
@@ -3123,8 +3123,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
     s1->fighters = fig;
 
     fig->unit = u;
-    /* In einer Burg mu� man a) nicht Angreifer sein, und b) drin sein, und
-     * c) noch Platz finden. d) menschan�hnlich sein */
+    /* In einer Burg muss man a) nicht Angreifer sein, und b) drin sein, und
+     * c) noch Platz finden. d) menschanaehnlich sein */
     if (attack) {
         set_attacker(fig);
     }
@@ -3150,7 +3150,7 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
     assert(h);
     rest = u->hp % u->number;
 
-    /* Effekte von Spr�chen */
+    /* Effekte von Spruechen */
 
     if (u->attribs) {
         curse *c = get_curse(u->attribs, &ct_speed);
@@ -3189,8 +3189,8 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
         }
     }
 
-    /* F�r alle Waffengattungen wird bestimmt, wie viele der Personen mit
-     * ihr k�mpfen k�nnten, und was ihr Wert darin ist. */
+    /* Fuer alle Waffengattungen wird bestimmt, wie viele der Personen mit
+     * ihr kaempfen koennten, und was ihr Wert darin ist. */
     if (u_race(u)->battle_flags & BF_EQUIPMENT) {
         int owp[WMAX];
         int dwp[WMAX];
@@ -3311,12 +3311,12 @@ fighter *make_fighter(battle * b, unit * u, side * s1, bool attack)
         }
     }
 
-    /* Jetzt mu� noch geschaut werden, wo die Einheit die jeweils besten
-     * Werte hat, das kommt aber erst irgendwo sp�ter. Ich entscheide
-     * w�rend des Kampfes, welche ich nehme, je nach Gegner. Deswegen auch
+    /* Jetzt muss noch geschaut werden, wo die Einheit die jeweils besten
+     * Werte hat, das kommt aber erst irgendwo spaeter. Ich entscheide
+     * waehrend des Kampfes, welche ich nehme, je nach Gegner. Deswegen auch
      * keine addierten boni. */
 
-    /* Zuerst mal die Spezialbehandlung gewisser Sonderf�lle. */
+    /* Zuerst mal die Spezialbehandlung gewisser Sonderfaelle. */
     fig->magic = effskill(u, SK_MAGIC, NULL);
 
     if (fig->horses) {
@@ -3410,7 +3410,7 @@ battle *make_battle(region * r)
 
     b->region = r;
     b->plane = getplane(r);
-    /* Finde alle Parteien, die den Kampf beobachten k�nnen: */
+    /* Finde alle Parteien, die den Kampf beobachten koennen: */
     for (u = r->units; u; u = u->next) {
         if (u->number > 0) {
             if (!fval(u->faction, FFL_MARK)) {
@@ -3593,18 +3593,18 @@ static void join_allies(battle * b)
 
             for (s = b->sides; s != s_end; ++s) {
                 side *se;
-                /* Wenn alle attackierten noch FFL_NOAID haben, dann k�mpfe nicht mit. */
+                /* Wenn alle attackierten noch FFL_NOAID haben, dann kaempfe nicht mit. */
                 if (fval(s->faction, FFL_NOAID))
                     continue;
                 if (s->faction != f) {
                     /* Wenn wir attackiert haben, kommt niemand mehr hinzu: */
                     if (s->bf->attacker)
                         continue;
-                    /* alliiert m�ssen wir schon sein, sonst ist's eh egal : */
+                    /* alliiert muessen wir schon sein, sonst ist's eh egal : */
                     if (!alliedunit(u, s->faction, HELP_FIGHT))
                         continue;
                     /* wenn die partei verborgen ist, oder gar eine andere
-                     * vorgespiegelt wird, und er sich uns gegen�ber nicht zu
+                     * vorgespiegelt wird, und er sich uns gegenueber nicht zu
                      * erkennen gibt, helfen wir ihm nicht */
                     if (s->stealthfaction) {
                         if (!alliedside(s, u->faction, HELP_FSTEALTH)) {
@@ -3612,7 +3612,7 @@ static void join_allies(battle * b)
                         }
                     }
                 }
-                /* einen alliierten angreifen d�rfen sie nicht, es sei denn, der
+                /* einen alliierten angreifen duerfen sie nicht, es sei denn, der
                  * ist mit einem alliierten verfeindet, der nicht attackiert
                  * hat: */
                 for (se = b->sides; se != s_end; ++se) {
@@ -3626,7 +3626,7 @@ static void join_allies(battle * b)
                 }
                 if (se == s_end)
                     continue;
-                /* keine Einw�nde, also soll er mitmachen: */
+                /* keine Einwaende, also soll er mitmachen: */
                 if (c == NULL) {
                     if (!join_battle(b, u, false, &c)) {
                         continue;
@@ -3750,7 +3750,7 @@ static bool start_battle(region * r, battle ** bp)
                         continue;
                     }
 
-                    /* ist ein Fl�chtling aus einem andern Kampf */
+                    /* ist ein Fluechtling aus einem andern Kampf */
                     if (fval(u, UFL_LONGACTION))
                         continue;
 
@@ -3771,7 +3771,7 @@ static bool start_battle(region * r, battle ** bp)
                                 cmistake(u, ord, 234, MSG_BATTLE);
                             }
                             else {
-                                /* Fehler: "Das Schiff mu� erst verlassen werden" */
+                                /* Fehler: "Das Schiff muss erst verlassen werden" */
                                 cmistake(u, ord, 19, MSG_BATTLE);
                             }
                             continue;
@@ -3845,8 +3845,8 @@ static bool start_battle(region * r, battle ** bp)
                         freset(u2->faction, FFL_NOAID);
 
                     if (c1 && c2 && c2->run.number < c2->unit->number) {
-                        /* Merken, wer Angreifer ist, f�r die R�ckzahlung der
-                         * Pr�combataura bei kurzem Kampf. */
+                        /* Merken, wer Angreifer ist, fuer die Rueckzahlung der
+                         * Praecombataura bei kurzem Kampf. */
                         c1->side->bf->attacker = true;
 
                         set_enemy(c1->side, c2->side, true);
@@ -3875,7 +3875,7 @@ static void battle_attacks(battle * b)
             && get_tactics(s, NULL) == b->max_tactics)) {
             for (fig = s->fighters; fig; fig = fig->next) {
 
-                /* ist in dieser Einheit noch jemand handlungsf�hig? */
+                /* ist in dieser Einheit noch jemand handlungsfaehig? */
                 if (fig->fighting <= 0)
                     continue;
 
@@ -3918,7 +3918,7 @@ static void battle_flee(battle * b)
             for (fig = s->fighters; fig; fig = fig->next) {
                 unit *u = fig->unit;
                 troop dt;
-                /* Flucht nicht bei mehr als 600 HP. Damit Wyrme t�tbar bleiben. */
+                /* Flucht nicht bei mehr als 600 HP. Damit Wyrme toetbar bleiben. */
                 int runhp = (int)(0.9 + unit_max_hp(u) * hpflee(u->status));
                 if (runhp > 600) runhp = 600;
 
@@ -4023,7 +4023,7 @@ static void do_battle(region * r) {
         return;
 
     /* Bevor wir die alliierten hineinziehen, sollten wir schauen, *
-     * Ob jemand fliehen kann. Dann er�brigt sich das ganze ja
+     * Ob jemand fliehen kann. Dann eruebrigt sich das ganze ja
      * vielleicht schon. */
     report_battle_start(b);
     if (!fighting) {
@@ -4069,8 +4069,8 @@ static void do_battle(region * r) {
     if (rule_force_leave(FORCE_LEAVE_POSTCOMBAT)) {
         force_leave(b->region, b);
     }
-    /* Hier ist das Gefecht beendet, und wir k�nnen die
-     * Hilfsstrukturen * wieder l�schen: */
+    /* Hier ist das Gefecht beendet, und wir koennen die
+     * Hilfsstrukturen * wieder loeschen: */
 
     free_battle(b);
 }
diff --git a/src/economy.c b/src/economy.c
index 876e77856..ec6986dd6 100644
--- a/src/economy.c
+++ b/src/economy.c
@@ -479,7 +479,7 @@ message *can_recruit(unit *u, const race *rc, order *ord, int now)
     }
     if (has_skill(u, SK_MAGIC)) {
         /* error158;de;{unit} in {region}: '{command}' - Magier arbeiten
-        * grunds�tzlich nur alleine! */
+        * grundsaetzlich nur alleine! */
         return msg_error(u, ord, 158);
     }
     return NULL;
@@ -971,7 +971,7 @@ static void allocate_resource(unit * u, const resource_type * rtype, int want)
     variant save_mod;
     skill_t sk;
 
-    /* momentan kann man keine ressourcen abbauen, wenn man daf�r
+    /* momentan kann man keine ressourcen abbauen, wenn man dafuer
      * Materialverbrauch hat: */
     assert(itype != NULL && (itype->construction == NULL
         || itype->construction->materials == NULL));
@@ -997,8 +997,8 @@ static void allocate_resource(unit * u, const resource_type * rtype, int want)
         save_mod.sa[1] = 1;
     }
 
-    /* Bergw�chter k�nnen Abbau von Eisen/Laen durch Bewachen verhindern.
-     * Als magische Wesen 'sehen' Bergw�chter alles und werden durch
+    /* Bergwaechter koennen Abbau von Eisen/Laen durch Bewachen verhindern.
+     * Als magische Wesen 'sehen' Bergwaechter alles und werden durch
      * Belagerung nicht aufgehalten.  (Ansonsten wie oben bei Elfen anpassen).
      */
     if (itype->rtype && (itype->rtype == get_resourcetype(R_IRON) || itype->rtype == rt_find("laen"))) {
@@ -1473,15 +1473,15 @@ static void expandbuying(region * r, econ_request * buyorders)
         return;
 
     /* Initialisation. multiplier ist der Multiplikator auf den
-     * Verkaufspreis. F�r max_products Produkte kauft man das Produkt zum
-     * einfachen Verkaufspreis, danach erh�ht sich der Multiplikator um 1.
-     * counter ist ein Z�hler, der die gekauften Produkte z�hlt. money
-     * wird f�r die debug message gebraucht. */
+     * Verkaufspreis. Fuer max_products Produkte kauft man das Produkt zum
+     * einfachen Verkaufspreis, danach erhoeht sich der Multiplikator um 1.
+     * counter ist ein Zaehler, der die gekauften Produkte zaehlt. money
+     * wird fuer die debug message gebraucht. */
 
     max_products = rpeasants(r) / TRADE_FRACTION;
 
-    /* Kauf - auch so programmiert, da� er leicht erweiterbar auf mehrere
-     * G�ter pro Monat ist. j sind die Befehle, i der Index des
+    /* Kauf - auch so programmiert, dass er leicht erweiterbar auf mehrere
+     * Gueter pro Monat ist. j sind die Befehle, i der Index des
      * gehandelten Produktes. */
     if (max_products > 0) {
         unsigned int norders = expandorders(r, buyorders);
@@ -1500,10 +1500,10 @@ static void expandbuying(region * r, econ_request * buyorders)
                 if (get_pooled(g_requests[j]->unit, rsilver, GET_DEFAULT,
                     price) >= price) {
                     item *items;
-                    /* litems z�hlt die G�ter, die verkauft wurden, u->n das Geld, das
-                     * verdient wurde. Dies mu� gemacht werden, weil der Preis st�ndig sinkt,
+                    /* litems zaehlt die Gueter, die verkauft wurden, u->n das Geld, das
+                     * verdient wurde. Dies muss gemacht werden, weil der Preis staendig sinkt,
                      * man sich also das verdiente Geld und die verkauften Produkte separat
-                     * merken mu�. */
+                     * merken muss. */
                     attrib *a;
 
                     u = g_requests[j]->unit;
@@ -1524,7 +1524,7 @@ static void expandbuying(region * r, econ_request * buyorders)
                     rsetmoney(r, rmoney(r) + price);
 
                     /* Falls mehr als max_products Bauern ein Produkt verkauft haben, steigt
-                     * der Preis Multiplikator f�r das Produkt um den Faktor 1. Der Z�hler
+                     * der Preis Multiplikator fuer das Produkt um den Faktor 1. Der Zaehler
                      * wird wieder auf 0 gesetzt. */
                     if (++trade->number == max_products) {
                         trade->number = 0;
@@ -1599,7 +1599,7 @@ static void buy(unit * u, econ_request ** buyorders, struct order *ord)
         return;
     }
     /* Im Augenblick kann man nur 1 Produkt kaufen. expandbuying ist aber
-     * schon daf�r ausger�stet, mehrere Produkte zu kaufen. */
+     * schon dafuer ausgeruestet, mehrere Produkte zu kaufen. */
 
     kwd = init_order_depr(ord);
     assert(kwd == K_BUY);
@@ -1632,11 +1632,11 @@ static void buy(unit * u, econ_request ** buyorders, struct order *ord)
         }
     }
 
-    /* Ein H�ndler kann nur 10 G�ter pro Talentpunkt handeln. */
+    /* Ein Haendler kann nur 10 Gueter pro Talentpunkt handeln. */
     k = u->number * 10 * effskill(u, SK_TRADE, NULL);
 
-    /* hat der H�ndler bereits gehandelt, muss die Menge der bereits
-     * verkauften/gekauften G�ter abgezogen werden */
+    /* hat der Haendler bereits gehandelt, muss die Menge der bereits
+     * verkauften/gekauften Gueter abgezogen werden */
     a = a_find(u->attribs, &at_trades);
     if (!a) {
         a = a_add(&u->attribs, a_new(&at_trades));
@@ -1653,7 +1653,7 @@ static void buy(unit * u, econ_request ** buyorders, struct order *ord)
     }
 
     assert(n >= 0);
-    /* die Menge der verkauften G�ter merken */
+    /* die Menge der verkauften Gueter merken */
     a->data.i += n;
 
     s = gettoken(token, sizeof(token));
@@ -1687,7 +1687,7 @@ void add_income(unit * u, income_t type, int want, int qty)
         "unit region mode wanted amount", u, u->region, (int)type, want, qty));
 }
 
-/* Steuers�tze in % bei Burggr��e */
+/* Steuersaetze in % bei Burggroesse */
 static int tax_per_size[7] = { 0, 6, 12, 18, 24, 30, 36 };
 
 static void expandselling(region * r, econ_request * sellorders, int limit)
@@ -1723,11 +1723,11 @@ static void expandselling(region * r, econ_request * sellorders, int limit)
     }
     memset(counter, 0, sizeof(int) * ncounter);
 
-    if (!sellorders) {            /* NEIN, denn Insekten k�nnen in   || !r->buildings) */
-        return;                     /* S�mpfen und W�sten auch so handeln */
+    if (!sellorders) {            /* NEIN, denn Insekten koennen in   || !r->buildings) */
+        return;                     /* Suempfen und Wuesten auch so handeln */
     }
-    /* Stelle Eigent�mer der gr��ten Burg fest. Bekommt Steuern aus jedem
-     * Verkauf. Wenn zwei Burgen gleicher Gr��e bekommt gar keiner etwas. */
+    /* Stelle Eigentuemer der groessten Burg fest. Bekommt Steuern aus jedem
+     * Verkauf. Wenn zwei Burgen gleicher Groesse bekommt gar keiner etwas. */
     for (b = rbuildings(r); b; b = b->next) {
         if (b->size > maxsize && building_owner(b) != NULL
             && b->type == castle_bt) {
@@ -1750,13 +1750,13 @@ static void expandselling(region * r, econ_request * sellorders, int limit)
             maxowner = (unit *)NULL;
         }
     }
-    /* Die Region muss genug Geld haben, um die Produkte kaufen zu k�nnen. */
+    /* Die Region muss genug Geld haben, um die Produkte kaufen zu koennen. */
 
     money = rmoney(r);
 
-    /* max_products sind 1/100 der Bev�lkerung, falls soviele Produkte
+    /* max_products sind 1/100 der Bevoelkerung, falls soviele Produkte
      * verkauft werden - counter[] - sinkt die Nachfrage um 1 Punkt.
-     * multiplier speichert r->demand f�r die debug message ab. */
+     * multiplier speichert r->demand fuer die debug message ab. */
 
     max_products = rpeasants(r) / TRADE_FRACTION;
     if (max_products <= 0)
@@ -1824,11 +1824,11 @@ static void expandselling(region * r, econ_request * sellorders, int limit)
                 change_money(u, price);
                 fset(u, UFL_LONGACTION | UFL_NOTMOVING);
 
-                /* r->money -= price; --- dies wird eben nicht ausgef�hrt, denn die
-                 * Produkte k�nnen auch als Steuern eingetrieben werden. In der Region
-                 * wurden Silberst�cke gegen Luxusg�ter des selben Wertes eingetauscht!
+                /* r->money -= price; --- dies wird eben nicht ausgefuehrt, denn die
+                 * Produkte koennen auch als Steuern eingetrieben werden. In der Region
+                 * wurden Silberstuecke gegen Luxusgueter des selben Wertes eingetauscht!
                  * Falls mehr als max_products Kunden ein Produkt gekauft haben, sinkt
-                 * die Nachfrage f�r das Produkt um 1. Der Z�hler wird wieder auf 0
+                 * die Nachfrage fuer das Produkt um 1. Der Zaehler wird wieder auf 0
                  * gesetzt. */
 
                 if (++counter[i] > max_products) {
@@ -1846,7 +1846,7 @@ static void expandselling(region * r, econ_request * sellorders, int limit)
     }
     free(g_requests);
 
-    /* Steuern. Hier werden die Steuern dem Besitzer der gr��ten Burg gegeben. */
+    /* Steuern. Hier werden die Steuern dem Besitzer der groessten Burg gegeben. */
     if (maxowner) {
         if (taxcollected > 0) {
             change_money(maxowner, (int)taxcollected);
@@ -1903,7 +1903,7 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
         cmistake(u, ord, 69, MSG_INCOME);
         return false;
     }
-    /* sellorders sind KEIN array, weil f�r alle items DIE SELBE resource
+    /* sellorders sind KEIN array, weil fuer alle items DIE SELBE resource
      * (das geld der region) aufgebraucht wird. */
 
     kwd = init_order_depr(ord);
@@ -1928,7 +1928,7 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
             return false;
         }
     }
-    /* In der Region mu� es eine Burg geben. */
+    /* In der Region muss es eine Burg geben. */
 
     if (u_race(u) == get_race(RC_INSECT)) {
         if (r->terrain != newterrain(T_SWAMP) && r->terrain != newterrain(T_DESERT)
@@ -1938,7 +1938,7 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
         }
     }
     else {
-        /* ...oder in der Region mu� es eine Burg geben. */
+        /* ...oder in der Region muss es eine Burg geben. */
         building *b = 0;
         if (r->buildings) {
             for (b = r->buildings; b; b = b->next) {
@@ -1951,7 +1951,7 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
         }
     }
 
-    /* Ein H�ndler kann nur 10 G�ter pro Talentpunkt verkaufen. */
+    /* Ein Haendler kann nur 10 Gueter pro Talentpunkt verkaufen. */
 
     i = u->number * 10 * effskill(u, SK_TRADE, NULL);
     if (n > i) n = i;
@@ -1978,7 +1978,7 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
         }
         available = get_pooled(u, itype->rtype, GET_DEFAULT, INT_MAX);
 
-        /* Wenn andere Einheiten das selbe verkaufen, mu� ihr Zeug abgezogen
+        /* Wenn andere Einheiten das selbe verkaufen, muss ihr Zeug abgezogen
          * werden damit es nicht zweimal verkauft wird: */
         for (o = *sellorders; o; o = o->next) {
             if (o->type.trade.ltype == ltype && o->unit->faction == u->faction) {
@@ -1996,16 +1996,16 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
             return false;
         }
         /* Hier wird production->type verwendet, weil die obere limit durch
-         * das silber gegeben wird (region->money), welches f�r alle
+         * das silber gegeben wird (region->money), welches fuer alle
          * (!) produkte als summe gilt, als nicht wie bei der
-         * produktion, wo f�r jedes produkt einzeln eine obere limite
+         * produktion, wo fuer jedes produkt einzeln eine obere limite
          * existiert, so dass man arrays von orders machen kann. */
 
-         /* Ein H�ndler kann nur 10 G�ter pro Talentpunkt handeln. */
+         /* Ein Haendler kann nur 10 Gueter pro Talentpunkt handeln. */
         k = u->number * 10 * effskill(u, SK_TRADE, NULL);
 
-        /* hat der H�ndler bereits gehandelt, muss die Menge der bereits
-         * verkauften/gekauften G�ter abgezogen werden */
+        /* hat der Haendler bereits gehandelt, muss die Menge der bereits
+         * verkauften/gekauften Gueter abgezogen werden */
         a = a_find(u->attribs, &at_trades);
         if (!a) {
             a = a_add(&u->attribs, a_new(&at_trades));
@@ -2016,7 +2016,7 @@ static bool sell(unit * u, econ_request ** sellorders, struct order *ord)
 
         if (n > k) n = k;
         assert(n >= 0);
-        /* die Menge der verkauften G�ter merken */
+        /* die Menge der verkauften Gueter merken */
         a->data.i += n;
         o = (econ_request *)calloc(1, sizeof(econ_request));
         if (!o) abort();
@@ -2047,7 +2047,7 @@ static void plant(unit * u, int raw)
         return;
     }
 
-    /* Skill pr�fen */
+    /* Skill pruefen */
     skill = effskill(u, SK_HERBALISM, NULL);
     if (skill < 6) {
         ADDMSG(&u->faction->msgs,
@@ -2055,14 +2055,14 @@ static void plant(unit * u, int raw)
                 "skill minskill product", SK_HERBALISM, 6, itype->rtype, 1));
         return;
     }
-    /* Wasser des Lebens pr�fen */
+    /* Wasser des Lebens pruefen */
     if (get_pooled(u, rt_water, GET_DEFAULT, 1) == 0) {
         ADDMSG(&u->faction->msgs,
             msg_feedback(u, u->thisorder, "resource_missing", "missing", rt_water));
         return;
     }
     n = get_pooled(u, itype->rtype, GET_DEFAULT, skill * u->number);
-    /* Kr�uter pr�fen */
+    /* Kraeuter pruefen */
     if (n == 0) {
         ADDMSG(&u->faction->msgs,
             msg_feedback(u, u->thisorder, "resource_missing", "missing",
@@ -2073,7 +2073,7 @@ static void plant(unit * u, int raw)
     i = skill * u->number;
     if (i > raw) i = raw;
     if (n > i) n = i;
-    /* F�r jedes Kraut Talent*10% Erfolgschance. */
+    /* Fuer jedes Kraut Talent*10% Erfolgschance. */
     for (i = n; i > 0; i--) {
         if (rng_int() % 10 < skill)
             planted++;
@@ -2098,10 +2098,10 @@ static void planttrees(unit * u, int raw)
         return;
     }
 
-    /* Mallornb�ume kann man nur in Mallornregionen z�chten */
+    /* Mallornbaeume kann man nur in Mallornregionen zuechten */
     rtype = get_resourcetype(fval(r, RF_MALLORN) ? R_MALLORN_SEED : R_SEED);
 
-    /* Skill pr�fen */
+    /* Skill pruefen */
     skill = effskill(u, SK_HERBALISM, NULL);
     if (skill < 6) {
         ADDMSG(&u->faction->msgs,
@@ -2126,7 +2126,7 @@ static void planttrees(unit * u, int raw)
     }
     if (n > raw) n = raw;
 
-    /* F�r jeden Samen Talent*10% Erfolgschance. */
+    /* Fuer jeden Samen Talent*10% Erfolgschance. */
     for (i = n; i > 0; i--) {
         if (rng_int() % 10 < skill)
             planted++;
@@ -2141,7 +2141,7 @@ static void planttrees(unit * u, int raw)
         "unit region amount herb", u, r, planted, rtype));
 }
 
-/* z�chte b�ume */
+/* zuechte baeume */
 static void breedtrees(unit * u, int raw)
 {
     int n, i, skill, planted = 0;
@@ -2153,7 +2153,7 @@ static void breedtrees(unit * u, int raw)
     get_gamedate(turn, &date);
     current_season = date.season;
 
-    /* B�ume z�chten geht nur im Fr�hling */
+    /* Baeume zuechten geht nur im Fruehling */
     if (current_season != SEASON_SPRING) {
         planttrees(u, raw);
         return;
@@ -2163,10 +2163,10 @@ static void breedtrees(unit * u, int raw)
         return;
     }
 
-    /* Mallornb�ume kann man nur in Mallornregionen z�chten */
+    /* Mallornbaeume kann man nur in Mallornregionen zuechten */
     rtype = get_resourcetype(fval(r, RF_MALLORN) ? R_MALLORN_SEED : R_SEED);
 
-    /* Skill pr�fen */
+    /* Skill pruefen */
     skill = effskill(u, SK_HERBALISM, NULL);
     if (skill < 12) {
         planttrees(u, raw);
@@ -2177,7 +2177,7 @@ static void breedtrees(unit * u, int raw)
     i = skill * u->number;
     if (raw > i) raw = i;
     n = get_pooled(u, rtype, GET_DEFAULT, raw);
-    /* Samen pr�fen */
+    /* Samen pruefen */
     if (n == 0) {
         ADDMSG(&u->faction->msgs,
             msg_feedback(u, u->thisorder, "resource_missing", "missing", rtype));
@@ -2185,7 +2185,7 @@ static void breedtrees(unit * u, int raw)
     }
     if (n > raw) n = raw;
 
-    /* F�r jeden Samen Talent*5% Erfolgschance. */
+    /* Fuer jeden Samen Talent*5% Erfolgschance. */
     for (i = n; i > 0; i--) {
         if (rng_int() % 100 < skill * 5)
             planted++;
@@ -2200,7 +2200,7 @@ static void breedtrees(unit * u, int raw)
         "unit region amount herb", u, r, planted, rtype));
 }
 
-/* z�chte pferde */
+/* zuechte pferde */
 static void breedhorses(unit * u)
 {
     int n, c, breed = 0;
@@ -2252,7 +2252,7 @@ static void breed_cmd(unit * u, struct order *ord)
         return;
     }
 
-    /* z�chte [<anzahl>] <parameter> */
+    /* zuechte [<anzahl>] <parameter> */
     (void)init_order_depr(ord);
     s = gettoken(token, sizeof(token));
 
@@ -2367,7 +2367,7 @@ static void expandentertainment(region * r)
         m -= u->n;
         entertaining -= o->qty;
 
-        /* Nur soviel PRODUCEEXP wie auch tats�chlich gemacht wurde */
+        /* Nur soviel PRODUCEEXP wie auch tatsaechlich gemacht wurde */
         produceexp(u, SK_ENTERTAINMENT, (u->n < u->number) ? u->n : u->number);
         add_income(u, IC_ENTERTAIN, o->qty, u->n);
         fset(u, UFL_LONGACTION | UFL_NOTMOVING);
@@ -2925,7 +2925,7 @@ void produce(struct region *r)
 
     /* Entertainment (expandentertainment) und Besteuerung (expandtax) vor den
      * Befehlen, die den Bauern mehr Geld geben, damit man aus den Zahlen der
-     * letzten Runde berechnen kann, wieviel die Bauern f�r Unterhaltung
+     * letzten Runde berechnen kann, wieviel die Bauern fuer Unterhaltung
      * auszugeben bereit sind. */
     if (entertaining)
         expandentertainment(r);
@@ -2943,7 +2943,7 @@ void produce(struct region *r)
     }
     /* An erster Stelle Kaufen (expandbuying), die Bauern so Geld bekommen, um
      * nachher zu beim Verkaufen (expandselling) den Spielern abkaufen zu
-     * k�nnen. */
+     * koennen. */
 
     if (buyorders) {
         expandbuying(r, buyorders);
diff --git a/src/give.c b/src/give.c
index 90ed64f50..c6e77aa68 100644
--- a/src/give.c
+++ b/src/give.c
@@ -402,7 +402,7 @@ message * give_men(int n, unit * u, unit * u2, struct order *ord)
         if (has_skill(u2, SK_ALCHEMY) && !has_skill(u, SK_ALCHEMY))
             k += n;
 
-        /* Wenn Parteigrenzen überschritten werden */
+        /* Wenn Parteigrenzen ueberschritten werden */
         if (u2->faction != u->faction)
             k += n;
 
@@ -416,8 +416,8 @@ message * give_men(int n, unit * u, unit * u2, struct order *ord)
     if (error == 0) {
         ship *sh = leftship(u);
 
-        /* Einheiten von Schiffen können nicht NACH in von
-        * Nicht-alliierten bewachten Regionen ausführen */
+        /* Einheiten von Schiffen koennen nicht NACH in von
+        * Nicht-alliierten bewachten Regionen ausfuehren */
         if (sh) {
             set_leftship(u2, sh);
         }
@@ -608,7 +608,7 @@ void give_unit(unit * u, unit * u2, order * ord)
 }
 
 bool can_give_to(unit *u, unit *u2) {
-    /* Damit Tarner nicht durch die Fehlermeldung enttarnt werden können */
+    /* Damit Tarner nicht durch die Fehlermeldung enttarnt werden koennen */
     if (!u2) {
         return false;
     }
@@ -638,8 +638,8 @@ static void give_all_items(unit *u, unit *u2, order *ord) {
             return;
         }
 
-        /* für alle items einmal prüfen, ob wir mehr als von diesem Typ
-        * reserviert ist besitzen und diesen Teil dann übergeben */
+        /* fuer alle items einmal pruefen, ob wir mehr als von diesem Typ
+        * reserviert ist besitzen und diesen Teil dann uebergeben */
         if (u->items) {
             item **itmp = &u->items;
             while (*itmp) {
@@ -768,7 +768,7 @@ void give_cmd(unit * u, order * ord)
             while (*itmp) {
                 item *itm = *itmp;
                 if (fval(itm->type, ITF_HERB) && itm->number > 0) {
-                    /* give_item ändert im fall,das man alles übergibt, die
+                    /* give_item aendert im fall,das man alles uebergibt, die
                     * item-liste der unit, darum continue vor pointerumsetzten */
                     if (give_item(itm->number, itm->type, u, u2, ord) == 0) {
                         given = true;
diff --git a/src/modules/museum.c b/src/modules/museum.c
index dcb9fce2f..36aa1d63f 100644
--- a/src/modules/museum.c
+++ b/src/modules/museum.c
@@ -152,7 +152,7 @@ order * ord)
     r = findregion(a->data.sa[0], a->data.sa[1]);
     assert(r);
     a_remove(&u->attribs, a);
-    /* Übergebene Gegenstände zurückgeben */
+    /* Uebergebene Gegenstaende zurueckgeben */
 
     a = a_find(u->attribs, &at_museumgivebackcookie);
     if (a) {
diff --git a/src/monsters.c b/src/monsters.c
index 15e9bc0b0..afa8070e5 100644
--- a/src/monsters.c
+++ b/src/monsters.c
@@ -9,7 +9,7 @@
  *  based on:
  *
  * Atlantis v1.0  13 September 1993 Copyright 1993 by Russell Wallace
- * Atlantis v1.7                    Copyright 1996 by Alex Schr�der
+ * Atlantis v1.7                    Copyright 1996 by Alex Schroeder
  *
  * This program may not be used, modified or distributed without
  * prior permission by the authors of Eressea.
@@ -74,7 +74,7 @@
 #include <string.h>
 #include <assert.h>
 
-#define DRAGON_RANGE       20  /* max. Distanz zum n�chsten Drachenziel */
+#define DRAGON_RANGE       20  /* max. Distanz zum naechsten Drachenziel */
 #define MOVE_PERCENT       25  /* chance fuer bewegung */
 #define MAXILLUSION_TEXTS   3
 
@@ -371,11 +371,11 @@ static direction_t random_neighbour(region * r, unit * u)
         }
     }
 
-    /* Zuf�llig eine ausw�hlen */
+    /* Zufaellig eine auswaehlen */
 
     rr = rng_int() % c;
 
-    /* Durchz�hlen */
+    /* Durchzaehlen */
 
     c = 0;
     for (i = 0; i != MAXDIRECTIONS; i++) {
@@ -412,11 +412,11 @@ static direction_t treeman_neighbour(region * r)
     if (c == 0) {
         return NODIRECTION;
     }
-    /* Zuf�llig eine ausw�hlen */
+    /* Zufaellig eine auswaehlen */
 
     rr = rng_int() % c;
 
-    /* Durchz�hlen */
+    /* Durchzaehlen */
 
     c = -1;
     for (i = 0; i != MAXDIRECTIONS; i++) {
@@ -561,7 +561,7 @@ static order *monster_learn(unit * u)
         return NULL;
     }
 
-    /* Monster lernt ein zuf�lliges Talent aus allen, in denen es schon
+    /* Monster lernt ein zufaelliges Talent aus allen, in denen es schon
      * Lerntage hat. */
     for (sv = u->skills; sv != u->skills + u->skill_size; ++sv) {
         if (sv->level > 0)
@@ -650,7 +650,7 @@ static order *plan_dragon(unit * u)
     if (rc == rc_wyrm && !move) {
         unit *u2;
         for (u2 = r->units; u2; u2 = u2->next) {
-            /* wyrme sind einzelg�nger */
+            /* Wyrme sind Einzelgaenger */
             if (u2 == u) {
                 /* we do not make room for newcomers, so we don't need to look at them */
                 break;
@@ -747,7 +747,7 @@ void plan_monsters(faction * f)
             order *long_order = NULL;
             bool can_move = true;
 
-            /* Ab hier nur noch Befehle f�r NPC-Einheiten. */
+            /* Ab hier nur noch Befehle fuer NPC-Einheiten. */
             if (u->faction!=f)
                 continue;
 
@@ -761,7 +761,7 @@ void plan_monsters(faction * f)
                 produceexp(u, SK_PERCEPTION, u->number);
             }
 
-            /* Befehle m�ssen jede Runde neu gegeben werden: */
+            /* Befehle muessen jede Runde neu gegeben werden: */
             free_orders(&u->orders);
 
             /* All monsters guard the region: */
@@ -833,7 +833,7 @@ void plan_monsters(faction * f)
                 }
             }
             if (long_order == NULL && check_student(u, NULL, SK_WEAPONLESS)) {
-                /* Einheiten, die Waffenlosen Kampf lernen k�nnten, lernen es um
+                /* Einheiten, die Waffenlosen Kampf lernen koennten, lernen es um
                 * zu bewachen: */
                 if (rc->bonus[SK_WEAPONLESS] != -99) {
                     if (effskill(u, SK_WEAPONLESS, NULL) < 1) {
@@ -875,7 +875,7 @@ unit *spawn_seaserpent(region *r, faction *f) {
 }
 
 /** 
- * Drachen und Seeschlangen k�nnen entstehen 
+ * Drachen und Seeschlangen koennen entstehen
  */
 void spawn_dragons(void)
 {
@@ -926,7 +926,7 @@ void spawn_dragons(void)
     }
 }
 
-/** Untote k�nnen entstehen */
+/** Untote koennen entstehen */
 void spawn_undead(void)
 {
     region *r;
@@ -946,7 +946,7 @@ void spawn_undead(void)
             message *msg;
             unit *u;
             /* es ist sinnfrei, wenn irgendwo im Wald 3er-Einheiten Untote entstehen.
-             * Lieber sammeln lassen, bis sie mindestens 5% der Bev�lkerung sind, und
+             * Lieber sammeln lassen, bis sie mindestens 5% der Bevoelkerung sind, und
              * dann erst auferstehen. */
             int undead = unburied / (rng_int() % 2 + 1);
             const race *rc = NULL;
@@ -1005,7 +1005,7 @@ void spawn_undead(void)
         else {
             int i = deathcount(r);
             if (i) {
-                /* Gr�ber verwittern, 3% der Untoten finden die ewige Ruhe */
+                /* Groeber verwittern, 3% der Untoten finden die ewige Ruhe */
                 deathcounts(r, (int)(-i * 0.03));
             }
         }
diff --git a/src/report.c b/src/report.c
index 79c154c50..51ece5d93 100644
--- a/src/report.c
+++ b/src/report.c
@@ -551,9 +551,9 @@ static void nr_curses(struct stream *out, int indent, const faction *viewer, obj
     region *r;
 
     /* Die Sichtbarkeit eines Zaubers und die Zaubermeldung sind bei
-    * Gebäuden und Schiffen je nach, ob man Besitzer ist, verschieden.
+    * Gebaeuden und Schiffen je nach, ob man Besitzer ist, verschieden.
     * Bei Einheiten sieht man Wirkungen auf eigene Einheiten immer.
-    * Spezialfälle (besonderes Talent, verursachender Magier usw. werde
+    * Spezialfaelle (besonderes Talent, verursachender Magier usw. werde
     * bei jedem curse gesondert behandelt. */
     if (typ == TYP_SHIP) {
         ship *sh = (ship *)obj;
diff --git a/src/spells.c b/src/spells.c
index 2d6b820e1..5e2474861 100644
--- a/src/spells.c
+++ b/src/spells.c
@@ -449,7 +449,7 @@ report_effect(region * r, unit * mage, message * seen, message * unseen)
   * Vertrauten sehen, und durch den Vertrauten zaubern, allerdings nur
   * mit seiner halben Stufe. Je nach Vertrautem erhaelt der Magier
   * evtl diverse Skillmodifikationen.  Der Typ des Vertrauten ist
-  * zufaellig bestimmt, wird aber durch Magiegebiet und Rasse beeinflußt.
+  * zufaellig bestimmt, wird aber durch Magiegebiet und Rasse beeinflusst.
   * "Tierische" Vertraute brauchen keinen Unterhalt.
   *
   * Ein paar Moeglichkeiten:
@@ -1588,7 +1588,7 @@ static int sp_create_stonegolem(castorder * co)
 }
 
 /* ------------------------------------------------------------- */
-/* Name:       Gro�e Duerre
+/* Name:       Grosse Duerre
  * Stufe:      17
  * Kategorie:  Region, negativ
  * Gebiet:     Gwyrrd
@@ -1896,7 +1896,7 @@ static int sp_treewalkexit(castorder * co)
         return 0;
     }
 
-    /* Koordinaten setzen und Region loeschen fuer �berpruefung auf
+    /* Koordinaten setzen und Region loeschen fuer Ueberpruefung auf
      * Gueltigkeit */
     rt = pa->param[0]->data.r;
     tax = rt->x;
@@ -2179,7 +2179,7 @@ static int sp_ironkeeper(castorder * co)
     unit_setstatus(keeper, ST_AVOID);  /* kaempft nicht */
     setguard(keeper, true);
     fset(keeper, UFL_ISNEW);
-    /* Parteitarnen, damit man nicht sofort wei�, wer dahinter steckt */
+    /* Parteitarnen, damit man nicht sofort weiss, wer dahinter steckt */
     if (rule_stealth_anon()) {
         fset(keeper, UFL_ANON_FACTION);
     }
@@ -2557,7 +2557,7 @@ static void patzer_fumblecurse(const castorder * co)
  *
  * Wirkung:
  *  In einer Wueste, Sumpf oder Gletscher gezaubert kann innerhalb der
- *  naechsten 6 Runden ein bis 6 Dracheneinheiten bis Groe�e Wyrm
+ *  naechsten 6 Runden ein bis 6 Dracheneinheiten bis Groesse Wyrm
  *  entstehen.
  *
  *  Mit Stufe 12-15 erscheinen Jung- oder normaler Drachen, mit Stufe
@@ -2803,7 +2803,7 @@ static int change_hitpoints(unit * u, int value)
 
     hp += value;
 
-    /* Jede Person ben�tigt mindestens 1 HP */
+    /* Jede Person benoetigt mindestens 1 HP */
     if (hp < u->number) {
         if (hp < 0) {               /* Einheit tot */
             hp = 0;
@@ -3680,7 +3680,7 @@ static int sp_rallypeasantmob(castorder * co)
  * Gebiet:   Cerddor
  * Wirkung:
  *  Wiegelt 60% bis 90% der Bauern einer Region auf.  Bauern werden ein
- *  gro�er Mob, der zur Monsterpartei gehoert und die Region bewacht.
+ *  grosser Mob, der zur Monsterpartei gehoert und die Region bewacht.
  *  Regionssilber sollte auch nicht durch Unterhaltung gewonnen werden
  *  koennen.
  *
@@ -3941,7 +3941,7 @@ static int sp_recruit(castorder * co)
         return 0;
     }
     /* Immer noch zuviel auf niedrigen Stufen. Deshalb die Rekrutierungskosten
-     * mit einfliessen lassen und dafuer den Exponenten etwas groe�er.
+     * mit einfliessen lassen und dafuer den Exponenten etwas groesser.
      * Wenn die Rekrutierungskosten deutlich hoeher sind als der Faktor,
      * ist das Verhaeltniss von ausgegebene Aura pro Bauer bei Stufe 2
      * ein mehrfaches von Stufe 1, denn in beiden Faellen gibt es nur 1
@@ -3972,7 +3972,7 @@ static int sp_recruit(castorder * co)
 }
 
 /* ------------------------------------------------------------- */
-/* Name:    Wanderprediger - Gro�e Anwerbung
+/* Name:    Wanderprediger - Grosse Anwerbung
  * Stufe:   14
  * Gebiet:  Cerddor
  * Wirkung:
@@ -4027,8 +4027,8 @@ static int sp_bigrecruit(castorder * co)
  * Gebiet:   Cerddor
  * Wirkung:
  *  Erliegt die Einheit dem Zauber, so wird sie dem Magier alles
- *  erzaehlen, was sie ueber die gefragte Region wei�. Ist in der Region
- *  niemand ihrer Partei, so wei� sie nichts zu berichten.  Auch kann
+ *  erzaehlen, was sie ueber die gefragte Region weiss. Ist in der Region
+ *  niemand ihrer Partei, so weiss sie nichts zu berichten.  Auch kann
  *  sie nur das erzaehlen, was sie selber sehen koennte.
  * Flags:
  *   (UNITSPELL | TESTCANSEE)
@@ -4086,7 +4086,7 @@ static int sp_pump(castorder * co)
  * Stufe:   6
  * Gebiet:   Cerddor
  * Wirkung:
- *  Betoert eine Einheit, so das sie ihm den groe�ten Teil ihres Bargelds
+ *  Betoert eine Einheit, so dass sie ihm den groessten Teil ihres Bargelds
  *  und 50% ihres Besitzes schenkt. Sie behaelt jedoch immer soviel, wie
  *  sie zum ueberleben braucht. Wirkt gegen Magieresistenz.
  *  min(Stufe*1000$, u->money - maintenance)
@@ -4256,7 +4256,7 @@ static int sp_headache(castorder * co)
     if (target->number == 0 || pa->param[0]->flag == TARGET_NOTFOUND)
         return 0;
 
-    /* finde das groe�te Talent: */
+    /* finde das groesste Talent: */
     for (i = 0; i != target->skill_size; ++i) {
         skill *sv = target->skills + i;
         if (smax == NULL || skill_compare(sv, smax) > 0) {
@@ -4405,7 +4405,7 @@ int sp_puttorest(castorder * co)
     return co->level;
 }
 
-/* Name:       Traumschloe�chen
+/* Name:       Traumschloesschen
  * Stufe:      3
  * Kategorie:  Region, Gebaeude, positiv
  * Gebiet:     Illaun
@@ -4440,7 +4440,7 @@ int sp_icastle(castorder * co)
 
     b = new_building(bt_illusion, r, mage->faction->locale);
 
-    /* Groe�e festlegen. */
+    /* Groesse festlegen. */
     if (type == bt_illusion) {
         b->size = (rng_int() % (int)((power * power) + 1) * 10);
     }
@@ -4613,7 +4613,7 @@ int sp_baddreams(castorder * co)
  * Kategorie:
  * Wirkung:
  *   Dieser Zauber ermoeglicht es dem Traeumer, den Schlaf aller aliierten
- *   Einheiten in der Region so zu beeinflussen, da� sie fuer einige Zeit
+ *   Einheiten in der Region so zu beeinflussen, dass sie fuer einige Zeit
  *   einen Bonus von 1 Talentstufe in allen Talenten
  *   bekommen. Der Zauber wirkt erst im Folgemonat.
  * Flags:
diff --git a/src/spells/combatspells.c b/src/spells/combatspells.c
index fd87a2f17..65bfff59b 100644
--- a/src/spells/combatspells.c
+++ b/src/spells/combatspells.c
@@ -62,7 +62,7 @@ static const char *spell_damage(int sp)
 {
     switch (sp) {
     case 0:
-        /* meist t�dlich 20-65 HP */
+        /* meist toetlich 20-65 HP */
         return "5d10+15";
     case 1:
         /* sehr variabel 4-48 HP */
@@ -71,7 +71,7 @@ static const char *spell_damage(int sp)
         /* leicht verwundet 4-18 HP */
         return "2d8+2";
     case 3:
-        /* fast immer t�dlich 30-50 HP */
+        /* fast immer toetlich 30-50 HP */
         return "5d5+25";
     case 4:
         /* verwundet 11-26 HP */
@@ -335,11 +335,11 @@ int sp_combatrosthauch(struct castorder * co)
     selist_free(fgs);
 
     if (k == 0) {
-        /* keine Waffen mehr da, die zerst�rt werden k�nnten */
+        /* keine Waffen mehr da, die zerstoert werden koennten */
         message *msg = msg_message("rust_effect_1", "mage", fi->unit);
         message_all(b, msg);
         msg_release(msg);
-        fi->magic = 0;              /* k�mpft nichtmagisch weiter */
+        fi->magic = 0;              /* kaempft nichtmagisch weiter */
         level = 0;
     }
     else {
@@ -405,7 +405,7 @@ int sp_speed(struct castorder * co)
 
     allies =
         count_allies(fi->side, FIGHT_ROW, BEHIND_ROW, SELECT_ADVANCE, ALLY_ANY);
-    /* maximal 2*allies Versuche ein Opfer zu finden, ansonsten best�nde
+    /* maximal 2*allies Versuche ein Opfer zu finden, ansonsten bestuende
      * die Gefahr eine Endlosschleife*/
     allies *= 2;
 
@@ -871,7 +871,7 @@ static bool select_afraid(const side *vs, const fighter *fig, void *cbdata)
 }
 
 /* Gesang der Furcht (Kampfzauber) */
-/* Panik (Pr�kampfzauber) */
+/* Panik (Praekampfzauber) */
 int flee_spell(struct castorder * co, int strength)
 {
     fighter * fi = co->magician.fig;
@@ -900,7 +900,7 @@ int flee_spell(struct castorder * co, int strength)
         fighter *df = (fighter *)selist_get(ql, qi);
 
         for (n = 0; force > 0 && n != df->alive; ++n) {
-            if (df->person[n].flags & FL_PANICED) {   /* bei SPL_SONG_OF_FEAR m�glich */
+            if (df->person[n].flags & FL_PANICED) {   /* bei SPL_SONG_OF_FEAR moeglich */
                 df->person[n].attack -= 1;
                 --force;
                 ++panik;
@@ -944,7 +944,7 @@ int sp_hero(struct castorder * co)
 
     allies =
         count_allies(fi->side, FIGHT_ROW, BEHIND_ROW, SELECT_ADVANCE, ALLY_ANY);
-    /* maximal 2*allies Versuche ein Opfer zu finden, ansonsten best�nde
+    /* maximal 2*allies Versuche ein Opfer zu finden, ansonsten bestuende
      * die Gefahr eine Endlosschleife*/
     allies *= 2;
 
@@ -992,7 +992,7 @@ int sp_berserk(struct castorder * co)
 
     allies =
         count_allies(fi->side, FIGHT_ROW, BEHIND_ROW - 1, SELECT_ADVANCE, ALLY_ANY);
-    /* maximal 2*allies Versuche ein Opfer zu finden, ansonsten best�nde
+    /* maximal 2*allies Versuche ein Opfer zu finden, ansonsten bestuende
      * die Gefahr eine Endlosschleife*/
     allies *= 2;
 
@@ -1181,7 +1181,7 @@ int sp_reeling_arrows(struct castorder * co)
 }
 
 /* Magier weicht dem Kampf aus. Wenn er sich bewegen kann, zieht er in
- * eine Nachbarregion, wobei ein NACH ber�cksichtigt wird. Ansonsten
+ * eine Nachbarregion, wobei ein NACH beruecksichtigt wird. Ansonsten
  * bleibt er stehen und nimmt nicht weiter am Kampf teil. */
 int sp_appeasement(struct castorder * co)
 {
@@ -1194,7 +1194,7 @@ int sp_appeasement(struct castorder * co)
     region *r = b->region;
     message *m;
 
-    /* Fliehende Einheiten verlassen auf jeden Fall Geb�ude und Schiffe. */
+    /* Fliehende Einheiten verlassen auf jeden Fall Gebaeude und Schiffe. */
     if (!(r->terrain->flags & SEA_REGION)) {
         leave(mage, false);
     }
@@ -1202,7 +1202,7 @@ int sp_appeasement(struct castorder * co)
     setguard(mage, false);
     unit_setstatus(mage, ST_FLEE);
 
-    /* wir tun so, als w�re die Person geflohen */
+    /* wir tun so, als waere die Person geflohen */
     fi->flags |= FIG_NOLOOT;
     fi->run.hp = mage->hp;
     fi->run.number = mage->number;
@@ -1242,7 +1242,7 @@ int armor_spell(struct castorder * co, int per_level, int time_multi)
     message_all(b, m);
     msg_release(m);
 
-    /* gibt R�stung +effect f�r duration Treffer */
+    /* gibt Ruestung +effect fuer duration Treffer */
 
     effect = level / per_level;
     duration = (int)(time_multi * power * power);
@@ -1286,7 +1286,7 @@ int sp_fumbleshield(struct castorder * co)
     message_all(b, m);
     msg_release(m);
 
-    /* der erste Zauber schl�gt mit 100% fehl  */
+    /* der erste Zauber schlaegt mit 100% fehl  */
     duration = 100;
     effect = 25 - level;
     if (effect < 1) effect = 1;
@@ -1344,7 +1344,7 @@ int sp_reanimate(struct castorder * co)
             && u_race(tf->unit) != get_race(RC_DAEMON)
             && (chance(c))) {
             assert(tf->alive < tf->unit->number);
-            /* t.fighter->person[].hp beginnt mit t.index = 0 zu z�hlen,
+            /* t.fighter->person[].hp beginnt mit t.index = 0 zu zaehlen,
              * t.fighter->alive ist jedoch die Anzahl lebender in der Einheit,
              * also sind die hp von t.fighter->alive
              * t.fighter->hitpoints[t.fighter->alive-1] und der erste Tote
diff --git a/src/spells/flyingship.c b/src/spells/flyingship.c
index 4dc186dc5..fb6a8faeb 100644
--- a/src/spells/flyingship.c
+++ b/src/spells/flyingship.c
@@ -26,8 +26,8 @@
 * Stufe:      6
 *
 * Wirkung:
-* Lae�t ein Schiff eine Runde lang fliegen.  Wirkt nur auf Boote
-* bis Kapazit�t 50.
+* Laesst ein Schiff eine Runde lang fliegen.  Wirkt nur auf Boote
+* bis Kapazitaet 50.
 * Kombinierbar mit "Guenstige Winde", aber nicht mit "Sturmwind".
 *
 * Flag:
diff --git a/src/steal.c b/src/steal.c
index 8c11c40a9..9847ee72b 100644
--- a/src/steal.c
+++ b/src/steal.c
@@ -57,7 +57,7 @@ void expandstealing(region * r, econ_request * stealorders)
     norders = expand_production(r, stealorders, &requests);
     if (!norders) return;
 
-    /* F�r jede unit in der Region wird Geld geklaut, wenn sie Opfer eines
+    /* Fuer jede unit in der Region wird Geld geklaut, wenn sie Opfer eines
      * Beklauen-Orders ist. Jedes Opfer muss einzeln behandelt werden.
      *
      * u ist die beklaute unit. oa.unit ist die klauende unit.
diff --git a/src/study.c b/src/study.c
index 3fb2d0a7d..6130d340a 100644
--- a/src/study.c
+++ b/src/study.c
@@ -859,7 +859,7 @@ void reduce_skill_days(unit *u, skill_t sk, int days) {
     }
 }
 
-/** Talente von Dämonen verschieben sich.
+/** Talente von Daemonen verschieben sich.
 */
 void demon_skillchange(unit *u)
 {
diff --git a/src/upkeep.c b/src/upkeep.c
index 9ab8c1fea..d5b5bf8d9 100644
--- a/src/upkeep.c
+++ b/src/upkeep.c
@@ -95,11 +95,11 @@ static bool hunger(int number, unit * u)
         deathcounts(r, dead);
     }
     if (hpsub > 0) {
-        /* Jetzt die Sch�den der nicht gestorbenen abziehen. */
+        /* Jetzt die Schaeden der nicht gestorbenen abziehen. */
         u->hp -= hpsub;
-        /* Meldung nur, wenn noch keine f�r Tote generiert. */
+        /* Meldung nur, wenn noch keine fuer Tote generiert. */
         if (dead == 0) {
-            /* Durch unzureichende Ern�hrung wird %s geschw�cht */
+            /* Durch unzureichende Ernaehrung wird %s geschwaecht */
             ADDMSG(&u->faction->msgs, msg_message("malnourish", "unit region", u, r));
         }
     }
@@ -133,13 +133,13 @@ void get_food(region * r)
     is_cold = insect_hunger && r_insectstalled(r);
 
     /* 1. Versorgung von eigenen Einheiten. Das vorhandene Silber
-    * wird zun�chst so auf die Einheiten aufgeteilt, dass idealerweise
-    * jede Einheit genug Silber f�r ihren Unterhalt hat. */
+    * wird zunaechst so auf die Einheiten aufgeteilt, dass idealerweise
+    * jede Einheit genug Silber fuer ihren Unterhalt hat. */
 
     for (u = r->units; u; u = u->next) {
         int need = lifestyle(u);
 
-        /* Erstmal zur�cksetzen */
+        /* Erstmal zuruecksetzen */
         freset(u, UFL_HUNGER);
 
         if (u->ship && (u->ship->flags & SF_FISHING)) {
@@ -237,7 +237,7 @@ void get_food(region * r)
     }
 
     /* 3. bestimmen, wie viele Bauern gefressen werden.
-    * bei fehlenden Bauern den D�mon hungern lassen
+    * bei fehlenden Bauern den Daemon hungern lassen
     */
     for (u = r->units; u; u = u->next) {
         const race * rc = u_race(u);
@@ -302,7 +302,7 @@ void get_food(region * r)
     }
     rsetpeasants(r, peasantfood / 10);
 
-    /* 3. Von den �berlebenden das Geld abziehen: */
+    /* 3. Von den Ueberlebenden das Geld abziehen: */
     for (u = r->units; u; u = u->next) {
         int m = get_money(u);
         int need = lifestyle(u);