Seite 1 von 2

benannt maskierter Unicode

Verfasst: 22.02.2006 18:42
von friedels-home
Hallo.
Ich benutze oft Unicode. Leider kann man min PhpBB-Forum keinen benannt maskierten Unicode verwenden. Nummerisch (dezimal) maskierter Unicode funktioniert, aber kein benannt maskierter. Da es ausgesprochen schwer (und unsinnig) ist, sich die ganzen Zahlen zu merken, würde ich mein Forum gerne so verändern, dass ich auch nummerisch maskierten Unicode verwenden kann. Gibt es so einen MOD? Oder weiß jemand wie man sowas machen kann? Wodurch wird denn der benannt maskierte Unicode umgewandet, sodass er nicht richtig dargestellt wird?

Danke

Verfasst: 24.02.2006 12:01
von friedels-home
Ich schiebe mal nach oben. Weiß keiner eine Lösung?

Verfasst: 28.03.2006 00:27
von friedels-home
Ich kann mir nicht vorstellen, dass das wirklich keiner weiß. Bitte helft mir. Ich kann leider kein Php und weiß deshalb auch nicht in welcher Datei ich wonach suchen muss um die Ursache für die Umwandlung zu finden.

Re: benannt maskierter Unicode

Verfasst: 28.03.2006 01:19
von easygo
friedels-home hat geschrieben:Leider kann man min PhpBB-Forum keinen benannt maskierten Unicode verwenden. Nummerisch (dezimal) maskierter Unicode funktioniert, aber kein benannt maskierter.
Problem wird sein, dass keiner weiß, was du damit meinst / nicht mal Google btw.

Bekannt sind die dez. / hex. Schreibweisen + UTF8/16 und dann halt noch
die so genannten named entities, aber die fallen da gar nicht drunter.

Also worum gehts? Mach mal Beispiel. easy

Verfasst: 28.03.2006 18:57
von friedels-home
Ich dachte eigentlich, dass allgemein bekannt ist, was Unicode ist. Unicode braucht man um Zeichen dar zu stellen, die nicht im Zeichensatz enthalten sind oder die man nicht eingeben kann (z.B. weil sie nicht auf dem Keyboard sind). Beispiele sind z.B. ¥ © ª ¬ ¬ ± µ ¿ Å Å † ‰ ‡ ℅ ℓ ∀ ∂ ∇ ∈ ∋ ∏ ∫ ∽ ≠ ≧ ⊆ ⊥ ⊿ ┃ ┋ ╬ ▁ ▂ ▁ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊ ▋ ▌ ▍ ▎ ▣ ▲ ▶ ◀ ◁ ◆ ◇ ◈ ★ ☎ ☜ ☞ ♀ ♂ ♠ ♥ ♪ ♬ ♯ ♭ und tausende von anderen Zeichen.
Wenn man ein Zeichen codiert, nennt man das "Maskieren". Dabei gibt es mehrere Möglichkeiten so ein Zeichen zu maskieren. 2 davon sind das dezimale Maskieren und das benannte Maskieren. Beim dezimalen Maskieren gibt man "&#", dann die Dezimalzahl die zu dem jeweilige Weichen gehört, dann ";" ein. "→" erzeugt also "→". Um diese Methode verwenden zu können muss ,am sich aber natürlich die ganzen Nummern der Zeichen merken. Deshalb gibt es für die wichtigsten Zeichen benannte Maskierungen. Dazu verwendet man statt der Nummern festgelegte Kürzel und lässt das "#" weg. So erzeugt "→" auch "→". Das kann man sich leicht merken, denn "rarr" steht für "right arrow". Leider wird in PhpBB-Foren "→" als "→" dargestellt weil irgend wo in der Forensoftware "→" zu "→" umgewandelt wird. Das "&" wird also benannt maskiert. Und das möchte ich abstellen damit ich benannt maskierten Unicode verwenden kann.

Die Bezeichnungen habe ich mir übrigens nicht ausgedacht. Aber natürlich kann man auch "named entities" sagen. Aber eigendlich wird hier Deutsch geschrieben. Auf Deutsch heißen "named entities" "benannt maskierte Zeichen".

Verfasst: 28.03.2006 20:21
von easygo
Wie gesagt! Named entities oder auch HTML entities fallen da nicht drunter.
Soll heißen, das ist kein Unicode. Drum ist (meine Meinung) auch die Bezeichnung
"benannt maskierter Unicode" verwirrend um nicht zu sagen falsch.

Riskier mal nen Blick in die Datei includes/functions_post.php

Ganz oben siehst du, worans evtl. hängt --> $html_entities_match / ff

Verfasst: 29.03.2006 02:21
von friedels-home
Die "Internationalization & Unicode Conferences" erstellen den "Unicode Standard". Und der ist nach eben dieser Unicode Conference (aktuell der 27-sten) für "Unicode and Named Entities" zuständig. Ob Named Entities Unicode sind, ist eine Frage der Definition. Jedenfalls sind sie Bestandteil des Unicode Standard. Aber wenn meine Formulierung zu Miss- oder Unverständnis führt muss ich natürlich eine andere Bezeichnung verwenden. Von mir aus "Named Entities".

Danke jedenfalls dafür, dass du mit mitgeteilt hast was für diese Umwandlung verantwortlich ist. Leider habe ich weder von Datenbanken, noch von Php viel Ahnung. So weiß ich nicht genau was &(?!(\#[0-9]+;)) bedeutet und vor allem weiß ich nicht warum das umgewandelt wird. Würden diese Zeichenfolgen den Datenbanken Probleme machen?

Verfasst: 29.03.2006 03:26
von easygo
Probleme? schon möglich. Wer das gecodet hat, wirds wissen.

Ich wars nicht. :D Also, ersetzt du das

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');
mal damit -->

Code: Alles auswählen

$html_entities_match = array('#<#', '#>#', '#"#');
$html_entities_replace = array('<', '>', '"');
und du hast genau das was du wolltest, nehm ich an. n8 easy

Verfasst: 21.11.2006 07:03
von friedels-home
Ist zwar lange her, aber ich stelle gerade fest, dass ich vergessen habe die Erfolgsmeldung zu posten und mich zu bedanken. Es hat geklappt und es gab keine Probleme mit der Datenbank oder sonst was.

Verfasst: 21.11.2006 09:34
von Olli Oberhausen
Schön zu hören, das es funktioniert - hätt ich bei den profis hier auch nicht anders erwartet.

Ich hatte letztens das selbe problem und bin auf diese lösung gekommen, damit wird auch weiterhin das & maskiert.

Wenns dir spaß macht das noch zu testen :grin: :grin: :grin:

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');
mal damit -->

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#\d{2,4};|\w{2,6};))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');