|
You last visited: Today at 19:43
Advertisement
[C#]BinaryReader.ReadString() - UTF8? [help]
Discussion on [C#]BinaryReader.ReadString() - UTF8? [help] within the .NET Languages forum part of the Coders Den category.
08/23/2013, 22:16
|
#1
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
[C#]BinaryReader.ReadString() - UTF8? [help]
Abend,
wollte mal fragen, ob es etwas wie die Methode .ReadString() nur halt als ANSI oder UTF8 gibt?
Danke im Vorraus.
mfg Logtetsch
|
|
|
08/23/2013, 22:31
|
#2
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Bei der Initialisierung kann man die Zeichencodierung mit angeben.
|
|
|
08/24/2013, 06:23
|
#3
|
elite*gold: 0
Join Date: May 2010
Posts: 88
Received Thanks: 23
|
Wobei du, um wirklich sicher zu sein eine eigene methode schreibe solltest, die dann so aehnlich aussieht:
var stringArray = br.ReadBytes(count);
return Encoding.UTF8.GetString(stringArray);
|
|
|
08/24/2013, 13:26
|
#4
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Quote:
Originally Posted by Easy-Emu
Wobei du, um wirklich sicher zu sein eine eigene methode schreibe solltest, die dann so aehnlich aussieht:
var stringArray = br.ReadBytes(count);
return Encoding.UTF8.GetString(stringArray);
|
Das Problem ist, ich weiß nicht wie groß der nächste String ist.
|
|
|
08/26/2013, 09:42
|
#5
|
elite*gold: 0
Join Date: May 2010
Posts: 88
Received Thanks: 23
|
dann wird er null terminated sein (gehe ich mal von aus)
dann liest du ebn byte fuer byte aus und ueberpruefst, in einer while schleife, wann 00 kommt und der string ende ist
|
|
|
08/26/2013, 14:36
|
#6
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Der String wird nicht nullterminiert gespeichert, er beginnt mit einer Angabe der Länge. Wenn das erste Byte einen Wert von weniger als 128 aufweist, dann entspricht dieser Wert der Länge des Strings. Ansonsten musst du das höchstwertige Bit umschalten und das nächste Byte ähnlich interpretieren. So erhälst du eine Reihe von Bits, die du dann als Länge interpretieren kannst. Siehe dazu auch die entsprechende  .
|
|
|
08/27/2013, 16:48
|
#7
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Quote:
Originally Posted by Easy-Emu
dann wird er null terminated sein (gehe ich mal von aus)
dann liest du ebn byte fuer byte aus und ueberpruefst, in einer while schleife, wann 00 kommt und der string ende ist
|
Quote:
Originally Posted by Tasiro
Der String wird nicht nullterminiert gespeichert, er beginnt mit einer Angabe der Länge. Wenn das erste Byte einen Wert von weniger als 128 aufweist, dann entspricht dieser Wert der Länge des Strings. Ansonsten musst du das höchstwertige Bit umschalten und das nächste Byte ähnlich interpretieren. So erhälst du eine Reihe von Bits, die du dann als Länge interpretieren kannst. Siehe dazu auch die entsprechende  .
|
Weder- noch.
Ich war dabei eine einfache Struktur aus mehreren bytes, strings und anderen Datentypen auszulesen. Dabei habe ich einfach übersehen, dass die länge der Strings immer vor dem Stringanfang definiert war.
Code:
struct str
{
..........
write dword/ word/ byte (stringlen)
write string
..........
}
Habe mittlerweile das Problem gelöst.
Trotzdem bedanke ich mich für eure Hilfe.
|
|
|
08/27/2013, 17:27
|
#8
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Und woher weißt du, wie viele Bytes zur Länge des Strings gehören? In der Form entspricht das jedenfalls nicht der ReadString-Methode... das solltest du dann nicht kombinieren.
|
|
|
08/27/2013, 22:03
|
#9
|
elite*gold: 900
Join Date: Apr 2009
Posts: 14,981
Received Thanks: 11,403
|
closed on request
|
|
|
Similar Threads
|
utf8 in game dekaron
02/20/2013 - Dekaron - 6 Replies
How can I offer to clients is a language I can edit the file? My language is mandatory (Dấu) :D:handsdown:
|
BinaryReader empfängt nichts
09/05/2012 - .NET Languages - 2 Replies
NetworkStream stream = client.GetStream();
BinaryReader r = new BinaryReader(stream);
if(r.ReadString() != "")
Console.Write("{0}",console_event(" empfangen"));
client.Close();
Console.Write("{0}",console_event(" Verbindung getrennt "));
Das ist der Codeausschnitt
Allerdings bleibt er IMMEr bei r.ReadString() stehen.
Habe ein kleines Nebenprogramm in Autoit gemacht um Testweise Pakete zu verschicken
|
[Help] Character Set (utf8, ascii and etc...).
07/24/2012 - CO2 Private Server - 10 Replies
I changed all the fields that stores strings in my database to utf8, but am not able to make store-type character: † among others ...What else should I change so you can store any character?
|
All times are GMT +1. The time now is 19:43.
|
|