ooAlbert
2007-11-27, 12:54:25
ich hab jetzt nicht alles hingeschrieben nur das wichtige :)
aber nochmal etwas ausführlicher:
int[] sArray = int[255];
int i = 0;
String s = "ABC";
while (i == s.length)
{
sArray[ i ] = Integer.parseInt(s.charAt(i));
i++;
}
die schleife soll so lange laufen, bis "s" komplett durchlaufen wurde. deshalb die längenprüfung.
Ergebnis sollte dann sein: 65, 66, 67; was die Dezimalzahlen zur A, B, C im Ascii sind.
Achill
2007-11-27, 22:33:59
Ich denke, das ist nicht so einfach ... ;)
Java benutzt (mindestens bei meinem System) den Zeichensatz "utf-8" per default.
Es gibt außerdem in der String-Klasse Methoden, die die Umwandlung eines Strings in ein Byte-Array übernehmen. Dazu kurz ein Beispiel, das auch den Zeichensatz berücksichtigen (Wölt ist absichtlich gewählt um Umlaute dabei zu haben).
String s = "Hallo Wölt";
System.out.print("defaultCharset: " + Charset.defaultCharset());
System.out.print("\nutf-8:");
for (byte aByte : s.getBytes()) {
System.out.print(" " + aByte);
}
System.out.print("\nascii:");
for (byte aByte : s.getBytes(Charset.forName("ASCII"))) {
System.out.print(" " + aByte);
}
System.out.print("\ncharsets: " + Charset.availableCharsets());
Ergibt das:
defaultCharset: UTF-8
utf-8: 72 97 108 108 111 32 87 -61 -74 108 116
ascii: 72 97 108 108 111 32 87 63 108 116
charsets: {Big5=Big5, Big5-HKSCS=Big5-HKSCS, COMPOUND_TEXT=COMPOUND_TEXT, EUC-JP=EUC-JP, EUC-KR=EUC-KR, GB18030=GB18030,
GB2312=GB2312, GBK=GBK, IBM-Thai=IBM-Thai, IBM00858=IBM00858, IBM01140=IBM01140, IBM01141=IBM01141, IBM01142=IBM01142,
IBM01143=IBM01143, IBM01144=IBM01144, IBM01145=IBM01145, IBM01146=IBM01146, IBM01147=IBM01147, IBM01148=IBM01148, IBM011
49=IBM01149, IBM037=IBM037, IBM1026=IBM1026, IBM1047=IBM1047, IBM273=IBM273, IBM277=IBM277, IBM278=IBM278, IBM280=IBM280
, IBM284=IBM284, IBM285=IBM285, IBM297=IBM297, IBM420=IBM420, IBM424=IBM424, IBM437=IBM437, IBM500=IBM500, IBM775=IBM775
, IBM850=IBM850, IBM852=IBM852, IBM855=IBM855, IBM857=IBM857, IBM860=IBM860, IBM861=IBM861, IBM862=IBM862, IBM863=IBM863
, IBM864=IBM864, IBM865=IBM865, IBM866=IBM866, IBM868=IBM868, IBM869=IBM869, IBM870=IBM870, IBM871=IBM871, IBM918=IBM918
, ISO-2022-CN=ISO-2022-CN, ISO-2022-JP=ISO-2022-JP, ISO-2022-JP-2=ISO-2022-JP-2, ISO-2022-KR=ISO-2022-KR, ISO-8859-1=ISO
-8859-1, ISO-8859-13=ISO-8859-13, ISO-8859-15=ISO-8859-15, ISO-8859-2=ISO-8859-2, ISO-8859-3=ISO-8859-3, ISO-8859-4=ISO-
8859-4, ISO-8859-5=ISO-8859-5, ISO-8859-6=ISO-8859-6, ISO-8859-7=ISO-8859-7, ISO-8859-8=ISO-8859-8, ISO-8859-9=ISO-8859-
9, JIS_X0201=JIS_X0201, JIS_X0212-1990=JIS_X0212-1990, KOI8-R=KOI8-R, KOI8-U=KOI8-U, Shift_JIS=Shift_JIS, TIS-620=TIS-62
0, US-ASCII=US-ASCII, UTF-16=UTF-16, UTF-16BE=UTF-16BE, UTF-16LE=UTF-16LE, UTF-32=UTF-32, UTF-32BE=UTF-32BE, UTF-32LE=UT
F-32LE, UTF-8=UTF-8, windows-1250=windows-1250, windows-1251=windows-1251, windows-1252=windows-1252, windows-1253=windo
ws-1253, windows-1254=windows-1254, windows-1255=windows-1255, windows-1256=windows-1256, windows-1257=windows-1257, win
dows-1258=windows-1258, windows-31j=windows-31j, x-Big5-Solaris=x-Big5-Solaris, x-euc-jp-linux=x-euc-jp-linux, x-EUC-TW=
x-EUC-TW, x-eucJP-Open=x-eucJP-Open, x-IBM1006=x-IBM1006, x-IBM1025=x-IBM1025, x-IBM1046=x-IBM1046, x-IBM1097=x-IBM1097,
x-IBM1098=x-IBM1098, x-IBM1112=x-IBM1112, x-IBM1122=x-IBM1122, x-IBM1123=x-IBM1123, x-IBM1124=x-IBM1124, x-IBM1381=x-IB
M1381, x-IBM1383=x-IBM1383, x-IBM33722=x-IBM33722, x-IBM737=x-IBM737, x-IBM834=x-IBM834, x-IBM856=x-IBM856, x-IBM874=x-I
BM874, x-IBM875=x-IBM875, x-IBM921=x-IBM921, x-IBM922=x-IBM922, x-IBM930=x-IBM930, x-IBM933=x-IBM933, x-IBM935=x-IBM935,
x-IBM937=x-IBM937, x-IBM939=x-IBM939, x-IBM942=x-IBM942, x-IBM942C=x-IBM942C, x-IBM943=x-IBM943, x-IBM943C=x-IBM943C, x
-IBM948=x-IBM948, x-IBM949=x-IBM949, x-IBM949C=x-IBM949C, x-IBM950=x-IBM950, x-IBM964=x-IBM964, x-IBM970=x-IBM970, x-ISC
II91=x-ISCII91, x-ISO-2022-CN-CNS=x-ISO-2022-CN-CNS, x-ISO-2022-CN-GB=x-ISO-2022-CN-GB, x-iso-8859-11=x-iso-8859-11, x-J
IS0208=x-JIS0208, x-JISAutoDetect=x-JISAutoDetect, x-Johab=x-Johab, x-MacArabic=x-MacArabic, x-MacCentralEurope=x-MacCen
tralEurope, x-MacCroatian=x-MacCroatian, x-MacCyrillic=x-MacCyrillic, x-MacDingbat=x-MacDingbat, x-MacGreek=x-MacGreek,
x-MacHebrew=x-MacHebrew, x-MacIceland=x-MacIceland, x-MacRoman=x-MacRoman, x-MacRomania=x-MacRomania, x-MacSymbol=x-MacS
ymbol, x-MacThai=x-MacThai, x-MacTurkish=x-MacTurkish, x-MacUkraine=x-MacUkraine, x-MS950-HKSCS=x-MS950-HKSCS, x-mswin-9
36=x-mswin-936, x-PCK=x-PCK, x-UTF-16LE-BOM=x-UTF-16LE-BOM, X-UTF-32BE-BOM=X-UTF-32BE-BOM, X-UTF-32LE-BOM=X-UTF-32LE-BOM
, x-windows-50220=x-windows-50220, x-windows-50221=x-windows-50221, x-windows-874=x-windows-874, x-windows-949=x-windows
-949, x-windows-950=x-windows-950, x-windows-iso2022jp=x-windows-iso2022jp}
beides eingegebene umlaute über tastatur und natürlich auch welche die schon fest im Programm stehen für ausgabe texte.
Aber ich glaub ich hab es jetzt :)
input:
try
{
BufferedReader in = new BufferedReader(new InputStreamReader
(System.in, "cp850"));
Text = in.readLine();
}
catch (IOException ex)
{
System.out.println(ex.getMessage());
}
output:
Das steht dann ganz oben in der MAIN.
try
{
System.setOut(new java.io.PrintStream(System.out, true, "cp850"));
}
catch (java.io.UnsupportedEncodingException e)
{
e.printStackTrace();
}
Das einzige was ich mich noch frage ist, werden mir die Umlaute nur korrekt angezeigt oder kann ich auch davon ausgehen, das die Umlaute korrekt weitergegeben werden, beispielsweise an ein anderes Programm was mit dem erzeugten String irgendetwas machen soll? Beispielsweise setz ich den String in einer Konsolenanweisung für Windows ein als Parameter oä.
Du mußt aufpassen, und darauf fallen viele rein, unter der Eingabekonsole werden die Umlaute mit CP850 angezeigt. Windows verwendet jedoch intern ISO-8859-1.
Wenn Du die korrekte Zeichensatzdarstellung mit ISO wählst, werden die Sonderzeichen auf der Konsole (da CP850) nicht richtig dargestellt. Läßt Du Dir jedoch diese Ausgabe in einem Editor anzeigen, ist sie korrekt.
Alles klar? ;)
Tipp, installiere eine cygwin (http://www.cygwin.com/)-Konsole, dann hast Du eine korrekte Darstellung der Umlaute auf beiden Seiten.
Datei umlaut.txt
äöüÄÖÜß
Ausgabe cygwin
cat umlaut.txt
>äöüÄÖÜß
Ausgabe Konsole (cmd.exe)
D:\>type umlaut.txt
õ÷³─Í▄▀
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.