LabVIEWForum.de - Unicode aus String entfernen

LabVIEWForum.de

Normale Version: Unicode aus String entfernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ich hab ein String mit komischen Zeichen drin und möchte diesen in "normale" Zeichen umwandeln - also 0-9 und a-z, A-Z, sowie alle Umlaute und Sonderzeichen.

Ist es die Funktion "In String formatieren" ? Aber wie kann ich die Formatierung angeben? In meinem String sind komische Zeichen wie  oder þ ach ja und Zeichen die man nicht sieht - aber auch keine Leerzeichen sind. Ich nehme an, dass es Unicode ist. Ich will die einfach nur weg haben Sad

Wäre für Hinweise dankbar.
Vielleicht hilft dir dieser Thread weiter. Hier auch nochmal der Link zu passenden .llb um Unicode/UTF-16 zu konvertieren.

MfG
Hallo,
ich weiß nicht, ob du das meinst, aber vielleicht hilft es dir ja:
Du kannst bei Text-Indikatoren,-Konstanten, bzw. -Controlls. mit Rechtsklick die Displayart ändern (Normal, Code, Passwort, Hex). Nimm dir mal den Indikator, stell "Normal Display" ein, füge deinen String ein und änder anschließend in "Code Display". Dann sollte dein String nur "Normale" Zeichen enthalten. Oder was willst du mit deinem String machen?
Ich will wirklich noch was mit dem String machen - ich will den Unicode nicht mal auslesen, sondern wirklich einfach entfernen. Es musste doch ne Funktion geben, in der man einen String einliest und dieser nur darstellbare Zeichen ausgibt und den rest einfach löscht, oder? Der String ist auch nicht so lang max. 255 Zeichen. Ich überleg auch grad, ob ich dann ne riesen-schleife bauen soll und jedes Zeichen im String abfragen soll ob es ein Zeichen 0-9, leerzeichen, bindestrich (also sonderzeichen) oder a-z bzw A-Z ist und sonst dieses Zeichen löschen lasse. Das ist aber mit Aufwand verbunden und höchstwarscheinlich unglaublich langsam.
Hallo rekorn,

vielleicht ist diese Funktion für dich interessant1
Hi,

kann es sein, dass du nicht Unicode meinst sondern Whitespace?

Wenn ja, schau mal in die String-Funktionen dort gibt es ein VI Namens "Trim Whitespace.vi".

Oder du machst es wie im Anhang.

Gruß
@ GerdW - Funktioniert leider nicht ganz wie ich will bzw. nur teilweise Sad es werden teile davon trotzdem als druckbares Zeichen erkannt

@ illuminus - Nein, diese Funktion "Trim Whitespace" hab ich bereits drin - löscht nur die Leerzeichen - funktioniert nicht, trotzdem danke Smile Allerdings kann ich mit deinem Anhang nicht viel anfangen, kannste die vi hochladen?

Kann es sein, dass es irgendwas mit der HEX-Darstellung zu tun hat? Wenn ich den String als Hex auslesen bekomm ich Zahlen.
1) Woher hast du deinen String? Vielleicht wäre es günstig, den String in der HEX-Darstellung einmal hier hochzuladen.

2) Bist du sicher, dass es Unicode ist? Unicode bedeutet 16bit anstatt 8bit pro Zeichen, da kommst du mit Löschen von Zeichen IMHO auf keinen grünen Zweig.

3) Falls es doch ASCII-Code ist, auch da gibt es "unlesbare" Zeichen.

4) Logisch ist in HEX-Darstellung alles lesbar. Schließlich wird dir in dieser Darstellung für jedes Zeichen bzw. Byte der entsprechende Zahlencode (0-255) in Hexadezimaldarstellung (0x00 bis 0xFF) angezeigt.

Gruß, Jens
@ jg erstmal zum Hintergrund der ganzen Aktion hier: ich möchte für mich ja ein kleines Programm schreiben um MP3s zu ordnen und lese dafür den ID3 Tag aus

1) ich bezieh meinen String durch die Suche nach einem bestimmten Ausdruck in einer MP3 --> die Info entstammt von id3.org mit dem Hinweis:

If the textstring is followed by a termination ($00 (00)) all the following information should be ignored and not be displayed. All text frame identifiers begin with "T". Only text frame identifiers begin with "T", with the exception of the "TXXX" frame. All the text information frames have the following format:
<Header for 'Text information frame', ID: "T000" - "TZZZ", excluding "TXXX" described in 4.2.2.>
Text encoding $xx
Information <text string according to encoding>

Also suche ich nach "TPE1" für den Interpreten und das was danach kommt - aber nur mit ner definierten Länge: und das ist m.E. irgendwie mit Unicode Hex oder so geschrieben - und diese Länge gilt es rauszufinden. Ich hab das schon gemacht, aber die vi die ich hier hochgeladen hatte scheint wohl nicht die Lösung zu sein (jedenfalls gabs Fehler)

2. keine Ahnung, soweit ich weiß schon.

3. Ich versuch mich grad drin den String einzeln durchzugehen und wenn das zeichen nicht lesbar ist dieses aus den String zu entfernen
Die Sache scheint sich wohl geklärt zu haben...

es waren die Zeichen ÿþ die stehen in der ISO/IEC 8859-1 Kodierung für FFFE (http://de.wikipedia.org/wiki/ISO_8859-1)

Und laut Wikiaussage http://de.wikipedia.org/wiki/UTF-16 wird es als ungültiges Unicode-Zeichen U+FFFE (not a character) interpretiert.

Ich hoffe search and destroy wird da helfen Smile
Seiten: 1 2
Referenz-URLs