Laden...

Bedeutung von \uxxxx in Strings

Erstellt von numpsy vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.348 Views
Thema geschlossen
N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 13 Jahren
Bedeutung von \uxxxx in Strings

Hallo,

habe hier das innere einer einfachen funktion:


        public string getValue(object value)
        {
            if (this.format != null)
            {
                return string.Format(string.Concat(\ue003.\ue000("\uf3c4\uf38f\uf385", 62229), this.format, \ue003.\ue000("\uf693", 63214)), value);
            }
            else
            {
                return value.ToString();
            }
        }

die wie ich weiss, dass ist


        public string getValue(object value)
        {
            return format != null ? String.Format("{0:" + format + "}", value) : value.ToString();
        }

aber ich versuche es abzuleiten. also die \xyz -> seht ihr darin etwas wie hex, unicode etc?

Gelöschter Account
vor 13 Jahren

Hallo numpsy

sollte UTF-8 sein.

gruß
Jack

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 13 Jahren

und irgendein tool, welches es mir easy convertiert... einfach speichern unter geht nicht mit zb.: textpad

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo numpsy,

nimm den entstehenden C#-String und speichere ihn (per C#) in einer Datei.

herbivore

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 13 Jahren

@ herbivore
versteh kein wort?

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

sollte UTF-8 sein. Es müsste sich eher um (16 Bit-) Unicode handeln.
Eingeleitetz vom Prefix \u gefolgt von 2 Bytes (hexadezimal).

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 13 Jahren

also unicode könnte stimmen... die fangen zumeist mit dem \u an...

nen conversion tools habe ich aber noch nicht gefunden

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

da wirds nicht viel zu konvertieren geben:

\ue003.\ue000("\uf3c4\uf38f\uf385", 62229)

bedeutet es existiert eine Klasse oder ein Objekt mit dem ungewöhnlichen Namen \ue003 und stellt eine Methode zur Verfügung, die den ebenso ungewöhnlichen Namen \ue000 trägt 🤔
Folgendes Konstrukt würde z.B. einen solchen Aufruf zulassen:

public class \ue003
{
  public static string \ue000(string input, int mod) { ... }
}
// Ja, sowas geht!!

Anhand des zweiten Parameters der Funktion (dem int-Wert) werden offenbar dann die Zeichen im übergebenen String nochmal verhackstückt, um das gewünschte Ergebnis zu erreichen.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 13 Jahren

internal sealed class \ue003
{
  public static string \ue000(string \ue000, int \ue000)
  {
    return string.Intern(\ue003.\ue002.\ue000.\ue000(\ue000, \ue000));
  }

  ...
}

gerade noch ein wenig im code gestöbert... die klasse gibt es wirklich...
es wurden also functionen und strings mit diesem \u.... codiert. zumindestens die strings sind rückholbar 😃

muss mal die rückgabewerte dieser krassen fct auslesen

1.346 Beiträge seit 2008
vor 13 Jahren

Sieht für mich sehr danach aus, als ob der Code obfuskiert wurde. Dann glaube ich nicht, dass der Urheber das erlaubt.(immerhin hat er den Code ja verschleiert)

Woher hast du den Code?

C
401 Beiträge seit 2007
vor 13 Jahren

sollte UTF-8 sein.
Es müsste sich eher um (16 Bit-) Unicode handeln.
Eingeleitetz vom Prefix \u gefolgt von 2 Bytes (hexadezimal).

Sorry, aber das stimmt so nicht. UTF-8 bedeutet nicht, dass es eine Länge von 8-Bit hat. UTF-8 Zeichen können entweder normale 8 Bit Folgen sein, wo sie der ASCII Darstellung entsprechen, oder 2-4 Byte lange Ketten, die eine entsprechende Kodierung aufweisen. Alle Unicode Kodierungen können sämtliche Unicode Zeichen darstellen.

Hinweis von herbivore vor 13 Jahren

Wie sich weiter unten aufklärt, stimmte es eben doch so, wie MarsStein geschrieben hat. Daraus, dass hinter dem \u immer vier Hex-Ziffern stehen (müssen), sprich 16Bit, folgt, dass es sich um UTF-16 handelt. Das steht natürlich auch in der Doku.

1.130 Beiträge seit 2007
vor 13 Jahren

Sorry, aber das stimmt so nicht. UTF-8 bedeutet nicht, dass es eine Länge von 8-Bit hat. UTF-8 Zeichen können entweder normale 8 Bit Folgen sein, wo sie der ASCII Darstellung entsprechen, oder 2-4 Byte lange Ketten

Schon wahr, aber die standardteichen sind bei utf-8 eben 1 byte lang und bei utf-16 eben 2 bytes lang. Und wie schon erwähnt wurde folgen auf \u zwei bytes. Daher ist utf16 eindeutig treffender.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

C
401 Beiträge seit 2007
vor 13 Jahren

Die Standardzeichen in UTF-16 beginnen mit 00 gefolgt von der ASCII Darstellung. Hier beginnt aber keine Folge mit 00. Also entweder sehe ich hier etwas komplett falsch, oder es sind merkwürdige Zeichen.

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Sorry, aber das stimmt so nicht. UTF-8 bedeutet nicht, dass es eine Länge von 8-Bit hat.

Das hat ja auch keiner behauptet 😃
ja, es sind merkwürdige Zeichen, und ja, ich weiß auch, daß UTF-8 wie UTF-16 ein Multibyte-Format ist. Der Unterschied ist aber, daß UTF-16 immer 2 Byte lange Zeichen hat, und UTF-8 variabel 1-3 Byte lange Zeichen.
Die Notation mit \u beschreibt aber ein UTF-16 Zeichen, also immer genau 2 Byte.
Siehe auch Backslash nicht escapen in einem String?

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
401 Beiträge seit 2007
vor 13 Jahren

Ah, alles klar, danke für die Aufklärung.

Thema geschlossen