UTF-8 in STring umwandeln oder umgedreht

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe hier so einen kleinen Chat zusammengebastelt, basiert auf Sockets und funktioniert soweit sogut, nur hab ich ein kleines Problem.

Ich möchte gerne eine Art Filter einbauen, dass wenn man zB eine Beleidigung schreibt etwas anderes auf dem Display erscheint. Nun ich habe das Problem soweit ausfindig gemacht, alles was über Sockets gesendet wird wird in UTF-8 gesendet, nun ich vergleiche es aber am andern Ende mit einem String, der also 16 Bits hat und der UTF-8 ist ja 8 bit encoded.

Ich habe also lange gegooglt und auch vielles probiert, nur weiss ich nicht genau was ich da machen kann. Es gibt auch eine möglichkeit einen Stzring im CLient einzulesen nur ist die nicht empfehlenswert.

Ich würde mich über eure VOrschläge freuen, wie kann ich da am besten vorgehen?

mfg
Kabel
 

Campino

Top Contributor
Wenn du den Text am Ende auch in einem String oder StringBuffer speicherst, dürftest du eigentlich kein Problem haben.
 
G

Guest

Gast
Hallo,

danke für die Antowrt, nur weiss ich nicht genau wie du das meinst...

Also ich soll nachdem das ganze in UTF-8 Form ankommt es in einen String speichern oder Stringbufer? Wie geh ich da am besten vor?

Ist das nur ein Befehl oder soll ich da ne ganze Klasse implementieren?

Ich werd mal nachsuchen, aber über weitere Ratschläge würde ich mich freuen.

Thx für die Hilfe,

mfg
Kabel
 
S

SlaterB

Gast
um da weiterzukommen musst du mal bisschen mehr verraten,
wie liegen die Daten denn vor? als Stream, bytes oder String?


verwende die Klasse String:
String(byte[] bytes, String charsetName)
Constructs a new String by decoding the specified array of bytes using the specified charset.


byte[] getBytes(String charsetName)
Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.
 

Kabel

Mitglied
Wie meinst das mit den daten? ALso ich hab eine Server Client Verbindung, die daten werden über eine Stream gesendet und dann per readUTF gelesen und mit writeUTF geschrieben...

nun ich will diese daten dann mit einem String vergleichen, if(readUTF=="LALA") so in der art, nur das klapt eben wegen dem falschen format nicht.

Also du meinst ich soll das ganze einfach anders Senden? Mh...

wird das den mit deinem Vorschlag so klappen wie ich es will?

Ich danke sehr,

mfg
Kabel
 
S

SlaterB

Gast
von Senden und Empfangen spreche ich nicht, darüber hast du ja bisher noch weniger gesagt (verwendete Streams usw.)
sicherlich könnte man mit richtigen Senden und Empfangen was erreichen

-------

Strings vergleicht man mit equals,

du hast also einen String 'readUTF' vorliegen, aber im falschen Charset?
dann verwende
Code:
String besser = new String(altString.getBytes("gewünschtesCharSet"));
oder sowas in der Art, genaues kann ich nicht sagen, das ist für mich immer was zum herumprobieren..
 

Kabel

Mitglied
Hallo,

thx für die Antwort, ich habe das nun soweit probiert, nur gehts immer noch nicht...

Was für ein CharSet ist den ein String? Ich hab mit Default probiert auch mit Ascii usw... mh weiss jemand das bitte?

mfg
Kabel
 
R

Roar

Gast
jo, sorry aber der code new String(altString.getBytes("gewünschtesCharSet")); ist ziemlich sinnlos :roll: string is string. wenn du beide texte als string hast, hast du wohl was falsch.
beachte, dass "readUTF=="LALA"" immer false ergibt, du außerdem vermutlich prüfen willst, ob das schimpfwort im gesendeten string vorkommt und nicht ob die beiden gleich sind.
 

Kabel

Mitglied
ja we jetzt? Ein String ist ein String und der andere ist UTF-8 encoded. Nun möchte ich gerne UTF-8 in String umwandeln.

Zuerst wäre ich mal froh wenn ich schon alleine überprüfen ob das eingetippte Wort ein Schimpfwort ist. Später werde ich dann überlegen wie ich einbauen kann dass er die Strings durchsucht...

mfg
Kabel
 
R

Roar

Gast
Kabel hat gesagt.:
ja we jetzt? Ein String ist ein String und der andere ist UTF-8 encoded. Nun möchte ich gerne UTF-8 in String umwandeln.

nein, strings sind strings und haben (nach außen) kein encoding. wichtig ist nur wie du die bytes die du empfängst einliest, aber das macht dein DIS schon für dich
 

Kabel

Mitglied
Ja ok. Aber was soll ich den jetzt am besten tun?

Ich komme irgendwie alleine nicht drauf. Braucht ihr vielleicht mehr infos? Ich poste mal ein Teil des Sockets. Da wo ich das Problem vermute. Also ich sende einen UTF-8 "String" über ein Socket. Ich will es mit andern vergleichen. Hier der Code:

Code:
while (true) {
				
//				... read the next message ...
				String message = din.readUTF();
				
//				... tell the world ...
				String message1="lala";
				StringBuffer 				System.out.println(message);
			        message = new String(utf8, "UTF-8");
			    } catch (UnsupportedEncodingException e) {
			    }

	    if(message=="")
	    {
	    	System.out.println("Do NOT Send Empty things!");
	    }
	    
	    
	    		if (message==message1)
				{
					System.out.println("same");
				}
				else System.out.println("not same");
				System.out.println( "Sending "+message );
//				... and have the server send it to all clients
				server.sendToAll( message );
So wenn ihr weitere braucht nur fragen =)

ALso ich hoffe das macht mein Problem etwas klarer.

Auf Jedenfall danke ich euch für die Hilfe bisher

mfg
Kabel
 

Murray

Top Contributor
Wie hier schon geschrieben wurde: String vergleicht man mit equals, nicht mit ==, denn i.d.R. will man ja wissen, ob es sich um einen String handelt, der den gleichen Inhalt hat wie ein anderer, und nicht etwa, ob es sich um ein und dasselbe Objekt im Speicher handelt.

Solange Du solche Statements
Code:
           if (message==message1)
verwendest, sind Encodings etc. das geringste Problem.

Ändere Das mal in
Code:
           if (message1.equals( message))
; evtl. ist Dein Problem damit schon beseitigt.
 

Kabel

Mitglied
JJaaaa =) genau was ich brauchte!

Ich danke dir sehr, wie ich auch all denen danke die mir schon vorher geholfen haben ohne dass ich es fertig gebracht habe es zu verstehen^^


Danke sehr =)

mfg
Kabel
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Socket String InputStream in hex umwandeln Netzwerkprogrammierung 1
G String in InetAddres umwandeln klappt nicht Netzwerkprogrammierung 5
F String in eine URL umwandeln Netzwerkprogrammierung 7
O Ip-String in byte[]-Array umwandeln? Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
T server empfängt nur 1 Buchstaben vom String Netzwerkprogrammierung 1
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
T Socket Gleiche String ungleich? Netzwerkprogrammierung 8
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
F String in Datenbank speichern Netzwerkprogrammierung 1
I RMI String Netzwerkprogrammierung 2
precoc String Array versenden Netzwerkprogrammierung 7
T Socket String zu Socket Netzwerkprogrammierung 26
7 String an Server Netzwerkprogrammierung 2
lumo String[] wird zu null bei Serialisierung Netzwerkprogrammierung 8
S WebService, 4-stelliger String (Jahr) als Calendar Netzwerkprogrammierung 5
M String an PHP Script aus Java übergeben Netzwerkprogrammierung 12
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Messenger - String oder Objekte Netzwerkprogrammierung 4
T Socket Nullterminierten String lesen Netzwerkprogrammierung 4
J Datei übertragen ja String + datei übertragen nein Netzwerkprogrammierung 5
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
N Socket Stream in String Netzwerkprogrammierung 4
J Browser-String angeben Netzwerkprogrammierung 5
S String[] über Socket senden Netzwerkprogrammierung 3
F Stream wird als Char übertragen. Char -> in String umwand Netzwerkprogrammierung 5
A String per ByteBuffer empfangen? Netzwerkprogrammierung 6
ModellbahnerTT Problem feste String ins Netzwerk zu geben Netzwerkprogrammierung 5
P string over net Netzwerkprogrammierung 4
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
B HEX String zu einem Byte Array ? *verzweiflung* :( Netzwerkprogrammierung 16
K String zurück liefern ! Netzwerkprogrammierung 4
S SSLSocketFactory.createSocket(String hostname, int port),wo? Netzwerkprogrammierung 5
C gesendeten String einlesen Netzwerkprogrammierung 3
G String to Socket ? Netzwerkprogrammierung 3
A StringCorruptedException: invalid String header Netzwerkprogrammierung 2
T curl request in java umwandeln Netzwerkprogrammierung 4
N URL mit Pfadangabe hinter dem Dateinnamen umwandeln Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben