• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Umlaute mit JSON

tschero

New member
Guten Morgen Zusammen,

Ich arbeite mich gerade etwas in das Thema JSON ein und habe Schwierigkeiten mit der Darstellung von Umlauten.

In meiner index.html steht folgendes ganz oben im <head> - Bereich:

HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

In einer meiner JavaScript Dateien welche ein JSON Object erstellt steht folgendes:
Code:
var officeData = {'test': [
        {

            'mapFile': 'textures/3d_Model.jpg',
            'navMarkers': [
                {'target': 1,
                    'x': 497.0484355184786,
                    'y': 91.396268393623394,
                    'z': 960.357313842974687
                }
            ],
            'markers': [
                {'person': 'bk',
                    'x': 455.0522836660948,
                    'y': -8.33536854966658,
                    'z': 98.80745435331792
                },
                {'person': 'mp',
                    'x': 414.3501347961816,
                    'y': -32.66661678215218,
                    'z': -237.3566836379287
                }
            ]

        }
    ],
//end 
    'people': {
        'bk': {
            'name': 'Herr Kr\u00f6mer',//            
            'role': 'Hausmann',
            'image': 'img/team/kraemer.jpg'
        },
        'mp': {
            'name': 'Frau Märtens',
            'role': 'Hausfrau',
            'image': 'img/team/maertens.jpg'
        }
    }
};

Hier entsteht das Problem, dass die Umlaute (aus dem Bereich 'people') nicht dargestellt werden.
Schreibe ich das ASCII Code Zeichen für den Umlaut hin wird der Umlaut auch im Browser angezeigt.

Die bestehenden Forenbeiträge habe ich gelesen, werde aber nicht so ganz schlau daraus.

Ich bin nocht nicht so ganz fit in JS, deshalb würde ich mich über eine kleine Hilfe sehr freuen.

Gruß
tschero
 
Hi,

vielen Dank für die Antwort.
Ja das
HTML:
ö
habe ich jetzt auch verwendet.

...warum denn so umständlich?

Ich suche nach der besten und sinnvollsten Möglichkeit mit Umlauten umzugehen.
Leider hab ich da noch ein kleines Verständnisproblem.

Gruß
tschero
 
um unicode-zeichen über den ascii-zeichensatz zu transportieren musst du diese zeichen irgendwie maskieren. das erfolgt über escape-sequenzen.
wie die escape-sequenzen aussehen ist je nach anwendungsfall unterschiedlich. in html über in js über \unummer.
wenn du dein html als utf8-codierte datei speicherst und sie als utf8-codierte datei an den client sendest, kannst du dir die codierung spaaren und die zeichen einfach verwenden.
wenn dein html nicht utf8 codiert ausgeliefert wird, kann der html-parser mit diesem zeichen nichts anfangen und macht murks. in diesem fall musst du das zeichen als html-sonderzeichen kennzeichnen und über codieren

- - - Aktualisiert - - -

und sie als utf8-codierte datei an den client sendest
also die codierungsangabe im http-header meine ich
 
Das würde bedeuten wenn im <head> eine der beiden folgenden Codezeilen eingebunden ist, sollte der Client / Browser die Umlaute aus der JSON Datei lesen können.

HTML:
<meta charset="utf-8">
HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Leider funktioniert das so nicht und genau da scheint mein Problem zu liegen.

Die JSON Datei (main.js) wird als vorletztes Script auf der Seite, vor dem </body> Tag eingebunden.


Selbst folgendes, was ich bei W3schools.com finde funktioniert nicht:
HTML:
<script type="text/javascript" src="js/main.js" charset="[B]UTF-8[/B]"></script>

So und jetzt kommt´s.

Trage ich eine der folgenden Zeilen ein, ist der Umlaut sichtbar:
HTML:
<script type="text/javascript" src="js/main.js" charset="[B]ISO-8859-1[/B]"></script>
HTML:
<script type="text/javascript" src="js/main.js" charset="[B]windows-1252[/B]"></script>

Irgendwie versteh ich das noch nicht so ganz. Es müsste doch mit UTF-8 funktionieren?!?

Das kann doch eigentlich nicht so kompliziert sein?!?

Gruß und Danke für Deine / Eure Geduld,

tschero
 
Das würde bedeuten wenn im <head> eine der beiden folgenden Codezeilen eingebunden ist, sollte der Client / Browser die Umlaute aus der JSON Datei lesen können.
nein, die meta angaben sind so sinnvoll wie alle meta angaben. wenn dein server die datei als ascii an den client sendet, kannst du dort reinschreiben was du willst, das ist für das file-pseudo-protokoll gedacht, wo du keinen http-header angeben kannst.

Leider funktioniert das so nicht und genau da scheint mein Problem zu liegen.
das problem erledigt sich von selbst, wenn du alles als utf8 behandels

So und jetzt kommt´s.

Trage ich eine der folgenden Zeilen ein, ist der Umlaut sichtbar:
weil dein html nicht als utf8 codiert ausgeliefert wird.

Irgendwie versteh ich das noch nicht so ganz. Es müsste doch mit UTF-8 funktionieren?!?
ja,
wenn du dein html als utf8-codierte datei speicherst und sie als utf8-codierte datei an den client sendest, kannst du dir die codierung spaaren und die zeichen einfach verwenden.
 
OK,

jetzt hab ich´s verstanden und auch das Problem gefunden.

Ich hatte die Datei in NetBeans geöffnet und bearbeitet aber nicht explizit als utf-8 gespeichert.

Ich musste aber ein Projekt anlegen und in den Projekteigenschaften angeben, mit utf-8 zu speichern.


Jetzt funktioniert es wunderbar, so wie es sein soll.

Vielen Dank für den Denkanstoß und Deine Geduld.

Viele Grüße,

tschero
 
[korinthenkacker]
In einer meiner JavaScript Dateien welche ein JSON Object erstellt steht folgendes:
Es gibt weder JSON Objekte, sondern nur Objekte, die in JSON gespeichert werden, und außerdem enthält deine Datei kein JSON, sondern ganz normales JS - durch die Kommentare ist es noch nicht einmal valides JSON, wenn du die Variablendeklaration weglässt.
[/korinthenkacker]
 
Zurück
Oben