ä ü ö im array

Hallo hab nen kleines Problem.

Hab ein Riesen Array. Wo teilweise auch ä ü ö drin vorkommt.
Wenn ich dies allerdings teile des Arrays ausgebe mit:

<?=$items_array[$Cat->vnum]?>

Zeigt er mir die Umlaute nicht an.
Hab schon Sachen wie

Probiert und dennoch, zeigt er mir Umlaute nicht an.
Was mache ich falsch?

http://puu.sh/cK7a0/65cc302e97.png

Das Fußballtriktot wird auf der Hompage so angezeigt im Array allerdings ist es so gespeichert:

http://puu.sh/cK7qP/440320185a.png

Weiß einer woran es liegt?

Hallo,

und wie sieht die head kodierung aus:
[ATTACH=full]3919[/ATTACH]

beim FF rechtsklick und „seiteninformationen anzeigen“

Cheffchen

Tschuldige, war unterwegs.
Also Head bereich:

http://puu.sh/cLdwW/4bee148533.png

Ich mein, Umlaute im HTML script selbst, funktionieren einwandfrei, nur wenn ich die mit PHP ausgebe (arrays, strings, variablen) werden umlaute nicht angezeigt

http://puu.sh/cLeV7/17f7753a1a.png
http://puu.sh/cLeVy/d7dbd860e0.png

Dann kontrolliere mal den Zeichensatz deiner PHP-Dateien. Der muss einheitlich mit dem HTTP-Header-Zeichensatz sein.

Wie mache ich das?

Kommt sich auf deinen Editor an. Meist in den Einstellungen unter Document Encoding bzw Dokumentenkodierung zu finden.
Womit arbeitest du?

Dreamweaver CC

Ich versteh zwar nicht wie man freiwillig damit arbeiten kann. Habe aber gelesen das man die Kodierung. Habe hier ein Link, weiß aber nicht ob das noch aktuell ist. Da der Beitrag wohl von 2010 ist und da gabs die CC noch nicht

So, mal nachgeschaut:

http://puu.sh/cMrHc/04a27e7316.png

Hab jetzt aber nochmal genauer nachgeschaut.
Also das Array bilde ich durch eine .txt datei. dort werden sachen ausgelesen und in ein Array geschrieben. (Damit die .txt datei nicht jedes mal sobald man Sachen davon braucht, erneut ausgelesen werden muss).

Nun habe ich das alte array gelöscht (items.global.php) und diese erneut erstellt, dann mal mein eigenes array (ohne auslesen) gebilded. Ergebniss: Er zeigt umlaute an.

Dann habe ich das array erneut aus der .txt datei generieren lassen und er zeigte mir bei der ausgabe wieder keine Umlaute an.

Hier mal die Datei, die aus der .txt ein Array bildet.

[PHP]

<?php $items_array = '$items_array'; $userdatei = fopen("libs/item_names.txt","r"); $r=1; $itemsglobal = fopen("models/items.global.php","w"); fwrite($itemsglobal, "<?php $items_array = array("); while(!feof($userdatei)){ $zeile = fgets($userdatei,1024); $out = explode("\t",$zeile); if($zeile > 3){ fwrite($itemsglobal, '"'.$out[0].'" => "'.$out[1].'",'); } ++$r;} fwrite($itemsglobal, "); ?>");
           fclose($userdatei);
         fclose($itemsglobal);
         ?>

[/PHP]

setz mal das hier vor deinem fwrite
[PHP]
fwrite($itemsglobal, pack(„CCC“,0xef,0xbb,0xbf));
[/PHP]

Ansonsten schonmal dran gedacht auf Datenbanken umzusteigen?

Aber noch ne Frage, erstellst du die txt Datei oder ist diese schon vorhanden? Weil wenn du die erstellst ist natürlich die Frage ob die Daten dort auch utf-8 sind. Und bei der items.global.php datei die selbe Frage, erstellst du die da erst oder ist diese schon vorhanden? Weil wenn du die da erstellst ist die PHP Datei vielleicht auch kein utf-8.
Aber versuch mal die eine Zeile noch hinzufügen, also nach Zeile 5.

Also die items.global.php existiert schon, es wird ledeglich reingeschrieben.

die .txt datei existiert auch schon, allerdings is sie bei jedem anwender Variabel, es kann durchaus vorkommen das die .txt datei bzw das array zu einem array mit mehr als ~6000 einträgen wird.

Was ist in diesen Fall schneller? Das array, oder die Datenbank?

mfG

Darf man fragen um was für Daten es sich da handelt? Also ich würde zur Verwaltung solcher Datenmenge auf jedenfall eine Datenbank empfehlen. Aber da kommt natürlich der Hoster und dein Können ins Spiel. Denn falls es ein free Hoster ist, dann ist es nicht immer sicher das eine MySQL Datenbank dabei ist. Und natürlich kommen dann die Programmierkenntnisse dazu. Zu Not musst du dir mal mysqli oder PDO anschauen.

Könntest durch die Datenbank schon alleine ersparnis haben, wenn sich Daten von Anwender zu Anwender wiederholen. Aber um das genau zu sagen müsste man mehr Infos haben.
Naja vielleicht wird sonst noch jemand anderer was dazu schreiben

Tschuldige, war fix einkaufen.

Also es handelt sich um Zuordnungen.

als beispiel:
DIe ID: 123, trägt den Namen „Rüstung“.

Ich gestalte derzeit ein ACP, für ein Online Rollenspiel und will dieses später veröffentlichen, damit die Verwaltung leichter fällt, als alles über eine Datenbank zu machen.

Da aber in vielen Tabellen, nur die ID steht und die Zuordnung von ID => Name bei diesen Rollenspiel über eine .txt datei stattfindet (das ganze sieht so aus)

10   Schwert+0
11   Schwert+1
12   Schwert+2
13   Schwert+3
14   Schwert+4
15   Schwert+5
16   Schwert+6
17   Schwert+7
18   Schwert+8
19   Schwert+9

Muss ich jetzt einen weg finden, die ID aus der Datenbanktabelle auszulesen und als Name dieses Items auszugeben.
Da viele Serveradministratoren nicht wirklich was mit den zahlen anfängen können.

Daher die Idee mit dem Array, welches sich aus den oben gezeigten Ausschnitt einer .txt datei bildet.
In diesen Falle

[PHP]
$items_array = array(„10“ => „Schwert+0“, „11“ => „Schwert+1“);
[/PHP]
usw.

Da sich aber diese Werte (ID und Name) von Server zu Server unterscheiden, muss ich diese .txt immer erst auslesen (die .txt exisitert immer) um dann die richtigen Zuordnungen zu haben.

Das große Problem wenn ichs Auslese und dann in die Datenbank schreibe ist:

Fatal error: Maximum execution time of 120 seconds exceeded in C:\Server\htdocs\acp\libs\install_items.php on line 27

Daran wirds scheitern. Da viele Administratoren (wie oben schon erwähnt) zwar einen eigenen Server besitzen, aber die Website (und somit das ACP) über einen Hoster laufen lassen.
Die Datenbank meist zwar nicht, aber das Limit bestimmt ja der Hoster, nicht die datenbank selbst (oder?!)

PDO wäre komplett neu für mich, mit mysqli arbeite ich permanent, ich wollte das ganze nur als Array speichern, da ich die befürchtung habe, das die Datenbankabfrage (6000 Einträge Auslesen und Ausgeben bzw Anzeigen lassen) zu lange dauert.

Das ist ja schrecklich wenn ich das richtig verstehe, dass die txt Datei schon von Server zu Server vorhanden ist. Ich dachte die erstellst du erst. Also ich hätte dann eher auf xml oder noch besser auf json zurück gegriffen anstelle einer txt Datei.

Nein nein, wie geasgt, die existiert schon :p. Nur ich muss sie halt auslesen und umwandeln, wenn ich damit arbeiten will.

Dann mal zurück zur Eingangssituation. Hat das mit den Umlauten nun geklappt?
Ansonsten vielleicht utf8_encode probieren beim $out[1]

Hach … Du bistn Engel, hät ich auch selbst drauf kommen können.

Jap utf8_encode hat funktioniert.
Das Problem allerdings jz ist die Lange ladezeit, wenn ich das Selectfeld öffne (aber denke mal egal über welche Art man es mache Datenbank oder Array, da es 6000 einträge sind, bleibt die ladezeit gleich)

Bitte sag nicht du lädst tatsächlich 6000 Einträge in ein Selectfeld o.O, sry aber sowas geht gar nicht. Hast du denn die Möglichkeit dies in Kategorien zu unterteilen, also ein Selectfeld zusätzlich wo du auswählen kannst
Rüstung, Waffen, sonstiges…

Also ich will niemanden auf die Füße treten aber falls das nicht geht finde ich die txt datei scheiße :smiley: Also da gibt es wirklich ein haufen elegantere Methoden

Ich hänge mal die .txt an, ich schätze nicht das ich irgendwo etwas finden kann, womit ich das ganze in verschiedene Kategorien unterteilen kann (mit nem autopmatischen Script).

Die .txt ist ja von den machern, damit habe ich 0 zutun.

Selectfeld mit 6k Einträgen ist unbenutzbar.

Wenn es tatsächlich nicht anders geht, dann nimm wenigestens sowas wie http://jqueryui.com/autocomplete/ statt der selectbox.