Index: src/uk/me/parabola/imgfmt/app/mdr/Mdr5.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/imgfmt/app/mdr/Mdr5.java	(revision 3090)
+++ src/uk/me/parabola/imgfmt/app/mdr/Mdr5.java	(revision )
@@ -12,6 +12,7 @@
  */
 package uk.me.parabola.imgfmt.app.mdr;
 
+import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -67,6 +68,8 @@
 		}
 		Collections.sort(sortKeys);
 
+		Collator collator = getConfig().getSort().getCollator();
+
 		int count = 0;
 		Mdr5Record lastCity = null;
 
@@ -79,11 +82,11 @@
 			Mdr5Record c = key.getObject();
 			c.setMdr20set(mdr20s);
 
-			if (!c.isSameByName(lastCity))
+			if (!c.isSameByName(collator, lastCity))
 				mdr20count++;
 			c.setMdr20Index(mdr20count);
 
-			if (c.isSameByMapAndName(lastCity)) {
+			if (c.isSameByMapAndName(collator, lastCity)) {
 				c.setGlobalCityIndex(count);
 			} else {
 				count++;
@@ -100,6 +103,7 @@
 		Mdr5Record lastCity = null;
 		boolean hasString = hasFlag(0x8);
 		boolean hasRegion = hasFlag(0x4);
+		Collator collator = getConfig().getSort().getCollator();
 		for (Mdr5Record city : cities) {
 			int gci = city.getGlobalCityIndex();
 			addIndexPointer(city.getMapIndex(), gci);
@@ -111,7 +115,7 @@
 			int region = city.getRegionIndex();
 
 			// Set the no-repeat flag if the name/region is different
-			if (!city.isSameByName(lastCity)) {
+			if (!city.isSameByName(collator, lastCity)) {
 				flag = 0x800000;
 				lastCity = city;
 			}
Index: src/uk/me/parabola/imgfmt/app/mdr/Mdr20.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/imgfmt/app/mdr/Mdr20.java	(revision 3090)
+++ src/uk/me/parabola/imgfmt/app/mdr/Mdr20.java	(revision )
@@ -13,6 +13,7 @@
 
 package uk.me.parabola.imgfmt.app.mdr;
 
+import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -84,23 +85,27 @@
 		}
 		Collections.sort(keys);
 
+		Collator collator = getConfig().getSort().getCollator();
+		//collator.setStrength(Collator.SECONDARY);
+
 		String lastName = null;
 		Mdr5Record lastCity = null;
 		int record = 0;
 		int cityRecord = 0;
 		int lastMapNumber = 0;
+
 		for (SortKey<Mdr7Record> key : keys) {
 			Mdr7Record street = key.getObject();
 
 			String name = street.getName();
 			Mdr5Record city = street.getCity();
 
-			boolean citySameByName = city.isSameByName(lastCity);
+			boolean citySameByName = city.isSameByName(collator, lastCity);
 
 			int mapNumber = city.getMapIndex();
 
 			// Only save a single copy of each street name.
-			if (!name.equals(lastName) || !citySameByName || mapNumber != lastMapNumber) {
+			if (!citySameByName || mapNumber != lastMapNumber || lastName == null || collator.compare(name, lastName) != 0) {
 				record++;
 
 				streets.add(street);
Index: src/uk/me/parabola/imgfmt/app/mdr/Mdr5Record.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/uk/me/parabola/imgfmt/app/mdr/Mdr5Record.java	(revision 3090)
+++ src/uk/me/parabola/imgfmt/app/mdr/Mdr5Record.java	(revision )
@@ -12,6 +12,8 @@
  */
 package uk.me.parabola.imgfmt.app.mdr;
 
+import java.text.Collator;
+
 /**
  * Holds information about a city that will make its way into mdr 5.
  * This class is used in several places as the information has to be gathered
@@ -135,25 +137,30 @@
 	 * Is this the same city, by the rules segregating the cities in mdr5 and 20.
 	 * @return True if in the same tile and has the same name for city/region/country.
 	 */
-	public boolean isSameByMapAndName(Mdr5Record other) {
+	public boolean isSameByMapAndName(Collator collator, Mdr5Record other) {
 		if (other == null)
 			return false;
 
-		return getMapIndex() == other.getMapIndex() && isSameByName(other);
+		return getMapIndex() == other.getMapIndex() && isSameByName(collator, other);
 	}
 
 	/**
 	 * Same city by the name of the city/region/country combination.
+	 *
+	 * @param collator Used to sort names.
 	 * @param other The other city to compare with.
 	 * @return True if is the same city, maybe in a different tile.
 	 */
-	public boolean isSameByName(Mdr5Record other) {
+	public boolean isSameByName(Collator collator, Mdr5Record other) {
 		if (other == null)
 			return false;
 
-		return getName().equals(other.getName())
-				&& getRegionName().equals(other.getRegionName())
-				&& getCountryName().equals(other.getCountryName());
+		return collator.compare(getName(), other.getName()) == 0
+				&& collator.compare(getRegionName(), other.getRegionName()) == 0
+				&& collator.compare(getCountryName(), other.getCountryName()) == 0;
+		//return getName().equals(other.getName())
+		//		&& getRegionName().equals(other.getRegionName())
+		//		&& getCountryName().equals(other.getCountryName());
 	}
 
 	public String toString() {
