Unicode char kyrillisch

Status
Nicht offen für weitere Antworten.

ulr!ch

Bekanntes Mitglied
Hi JavaGemeinde,

ich habe hier ein Problem mit einer txt-Datei die im UniCode-Format abgespeichert kyrillische Buchstaben enthält. Wenn ich die Zeichen in einen String konvertiere, gehen sie verloren. Deswegen alles über char laufen lassen.
Gibt es so etwas wie den StringTokenizer für char? Wie kann ich die char-Sequence splitten (Trennzeichen: Leerzeichen)? Danke für jede Art von Hilfe vorab.

By<e Ulrich
 
Im String Kostruktor
String(byte[] bytes, String charsetName)
kannst du einen Zeichensatz angeben, bringt das was?

Und eine charsequenz könntest du spiltten in dem du nach dem Leerzeichen suchst und dir die Teile über subSequence(int start, int end) holst.
 
Mit dem Konstruktor von Stevi funktioniert das richtige Anzeigen!

Habe mich mit dem auch schon lange genug rumgequählt und nach einer gewissen Zeit hats dann funktioniert 😉

Jedenfalls, hättest du dir so auch die char[] Arrays sparen können 😉
 
Hi JavaGemeinde,

danke für die Antworten, die helfen mir schon sehr weiter. 🙂
Ich habe noch ein kleines Problem, ich kriege beim Auslesen der Datei ein char[], aber im String-Konstruktor muss - falls man die Zeichentabelle angeben möchte - byte[] stehen.
Wieso funktioniert das casten s. u. nicht?
Was mache ich falsch?

Code:
char[] data = new char[size];
String text = new String((data)byte[], 0, chars_read, "ISO-8859-5");

Thx a lot! Super Forum,

By<e Ulrich
 
Wieso liest du es nicht gleich in ein byte stream ein??

Ansonsten musst du es per Hand kopieren... (also ein neues byte[] und die Inhalte kopieren)
 
thE_29 hat gesagt.:
Wieso liest du es nicht gleich in ein byte stream ein??
Ansonsten musst du es per Hand kopieren... (also ein neues byte[] und die Inhalte kopieren)

Das habe ich versucht, aber dann beschwert er sich, dass ein Genauigkeitsverlust möglich sein könnte und wie ich den vermeide, habe ich bisher noch nicht herausbekommen.
Hier der Code:
Code:
byte[] dataByte = new byte[size];
for (int i=0; i<=size; i++) {
  dataByte[i] = (data[i]);
}

Eine Idee?
Ich versuche dass jetzt mal mit dem ByteStream, was du meintest.
Mal sehen, ob ich das hinbekomme.

By<e Ulrich
 
Die kyrillischen Zeichen haben in Unicode die dezimalen Codes 1024 bis 1151.
Die Konvertierung in byte könnte daher ein Problem werden, nehm ich an...
 
Nope!

Wenn du sie Ausgeben lässt (die byte Werte) so schreibt er auch 1024 hin 😉

Das ist das sehr komische, aber gehn tuts. Nur wird mit einem nicht unterstützten Zeichensatz konvertiert, so haben sie den Wert 655535 bzw irgendsoeinen Wert.
 
was soll das?

warum nimmst du nicht gleich einen Reader, stellst das Encoding ein und bekommst so einen String???
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben