# ISO 3166-1 / Länderbezeichnung in Muttersprache gesucht



## Mik3e (14. November 2005)

Hi zusammen,

Ich habe eine Liste aller 239 Länder, die nach ISO 3361 genormt sind. Mein Problem ist nun, dass es diese List nun in Englisch gibt. *Ich hätte aber gerne alle Länderbezeichnungen in der eigentlichen Muttersprache...*

*Also NICHT* Deutschland = Germany und Österreich = Austria
*sondern:* Deutschland = Deutschland und Österreich = Österreich

Habt Ihr eine Idee, wo ich diese Liste bekomme Weil jedes einzelne Land in seine Muttersprache zu übersetzen ist doch ein kleines Problem (z.B.: Equatorial Guinea = ? ... ich hab nicht mal nen schimmer, was dort gesprochen wird.. spanisch?) 

Ich hoffe das selbe Problem hatte schon mal jemand von Euch,
Ciao,
Mike

P.S.: THX 2 HP für den Input


----------



## schiese (14. November 2005)

Hi
beiWikipedia gibt es eine Liste aller 193 unabhängigen Staaten. Dort ist der Name auch in der Landessprache angegeben.

Gunnar


----------



## Mik3e (14. November 2005)

Hi!

Danke.. guter Tipp..
Ich stehe jetzt nur vor dem Problem, die Zeichen auf die Site zu bringen.

Habe es mit "Afgahnistan" probiert.
In meiner DB sieht es recht fein aus. MySQL 5.0.1, Kollation: utf8_general_ci.
Gebe ich den Text aber aus, erscheinen nur 6 Fragezeichen...?

*Ausgabeproblem:*

```
echo utf8_encode($row['country_name'])
```
*Ausgabe*: ? ? ? ? ? ?
*Korrekt wäre*: ?????????

Auch ohne UTF-8 Encoding habe ich das selbe Problem...
Hat irgendjemand eine Idee, was das Problem sein könnte? Die site ist auch als UTF-8 notiert...

LG
Mike


----------



## Mik3e (14. November 2005)

Hm.. niemand einen Tipp, was das Problem sein könnte?
Bräuchte wirklich dringend Hilfe, da ich hier im Moment festhänge...

Danke & Ciao,
Mike


----------



## nero_85 (14. November 2005)

Dazu  musst du glaub ich auf das Dokument in utf-8 laden! Oder ist ISO-3361 und utf-8 das gleiche?


----------



## Mik3e (14. November 2005)

Ist bereits UTF-8 notiert....

```
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
```

Also daran kanns nicht liegen...
Und ich bin mittlerweilen mit meinem Latein am Ende...


----------



## Mik3e (14. November 2005)

Unglaublich, ich hab das Problem gelöst.. *Vor jeder Abfrage muss man dem MySQL Server mitteilen, in welcher Codierung die Daten ausgelesen werden sollen* (Ausnahme: Persistente Verbindungen, da das setzten der Character Properties verbindungsbezogen ist). Wozu es dann die Angabe der Kollation gibt verstehe ich nicht ganz, aber ok..

Hier ein Beispiel, sollte mal jemand das selbe Problem haben:
*WICHTIG: Danach ist ein Encoden mit php nicht mehr nötig (ut8_encode).*


```
function getCountriesInstalled($startCount,$showResultCount)
	{
		$sql = 'SET NAMES \'utf8\' ';
		$result =$this->_db->query($sql);
		
		$sql = ' SELECT '
			. ' tbl_country.`country_name` AS `country_name` '
			. ' FROM `tbl_country` AS `tbl_country` '
			. ' ORDER BY tbl_country.`country_sort_order` ASC, '
			. ' tbl_country.`country_name` ASC ';
	  	$result =$this->_db->query($sql);
		return $result;
	}
```

Ich hab mir jetzt ne zigarette verdient glaub ich 
Ciao,
Mike


----------



## Mik3e (14. November 2005)

Achtung: Hier dürfte es beim IE einen Bug bei der Codierung geben... (siehe JPEG im Anhang)... Es handelt sich dabei um ein "umgedrehtes e"... (ne, das ist keine neue Designerdroge, sondern irgendein Schriftzeichen 

Nachdem ich bei z.B. Wikipedia das selbe Problem festgestellt habe, schieb ich die Schuld mal Bill Gates in die Schuhe... Falls Ihr dennoch eine Idee habt, immer her damit 

Ciao,
Mike

P.S.: Aber jetzt gönn ich mir wirklich ne kippe


----------



## Gumbo (14. November 2005)

Die verwendete Zeichenkodierung muss bereits im HTTP-Header angegeben werden.


----------



## Mik3e (14. November 2005)

"und wie" sprach zeus?....
LG
Mike


----------



## Gumbo (14. November 2005)

Beispielsweise mit PHPs header()-Funktion.


----------



## Mik3e (14. November 2005)

Das mit header() ist mir klar (war offensichtlich schlecht beschrieben).. Mir gehts eigentlich um den Inhalt des Headers, damit ich UTF-8 kodierte Zeichen abbilden kann...

Das ist doch nichts außergewöhnliches, oder Weil ich hab nicht sonderlich viel Lust, mich durch die 1000 Seiten RFC zu wühlen


----------



## Gumbo (14. November 2005)

Du hast doch bereits ein Pseudo-HTTP-Äquivalent in Form eines HTML-Elements erwähnt.


----------



## Mik3e (14. November 2005)

Das war die HTML-Notation, nicht die des Headers...


----------



## Gumbo (14. November 2005)

Aber die ist doch nicht anders aufgebaut als ein HTTP-Headerfeld: _<Feldbezeichner>_:_<Feldwert>_ entspricht dem Pseudo-Äquivalent <meta http-equiv="_<Feldbezeichner>_" content="_<Feldwert>_">.


----------



## Mik3e (14. November 2005)

Anderes "Problem":

Ich verwende header() zur Weiterleitung... Derzeit verwende ich testweise relative URIs. Das hat den Grund, da jede seite mit/ohne SSL verfügbar ist (https:// oder http://).

Die relativen URIs funktionieren mit allen Clients problemlos (IE, Firefox und Opera). Allerdings bin ich nochmals über folgende Warnung gestoßen:


```
Anmerkung: HTTP/1.1 verlangt einen absoluten URI inkl. dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs.
```
Die Frage ist, warum sich das bei keinem meiner Clients bemerkbar macht?


----------



## Gumbo (14. November 2005)

Die meisten User Agents sind so fehlertolerant, dass sie relative und absolute Pfadangaben selbstständig aufschlüsseln und den absoluten URI generieren. Dennoch dürfen (eigentlich) nur absolute URIs angegeben werden.


----------



## Mik3e (14. November 2005)

Das habe ich befürchtet... Wie würdest Du dann die http / https Problematik lösen


----------



## Gumbo (14. November 2005)

Überprüfe einfach den angefragen Port (vgl. vordefinierte $_SERVER-Variable). Ist dieser 443, handelt es sich um eine HTTPS-Verbindungen.


----------



## Mik3e (15. November 2005)

Gefällt mir nicht wirklich... 443 is ja nicht zwingend.. SSL kann theoretisch über  verschiedenen Ports laufen... (außer ich hab hier falsche Infos)...
Ich erzwinge einfach SSL, damit ist das Problem gelöst


----------

