platform's default character encoding?

Status
Nicht offen für weitere Antworten.

benner

Aktives Mitglied
print

public void print(String s)

Print a string. If the argument is null then the string "null" is printed. Otherwise, the string's characters are converted into bytes according to the platform's default character encoding, and these bytes are written in exactly the manner of the write(int) method.

Parameters:
s - The String to be printed

Dies ist ein Auszug aus der JavaAPI für die Klasse PrintWriter. Mein Problem ist das default character encoding. Von welchem Zeichensatz wird hier ausgegangen, wenn ich das ganze unter Windows XP ausführe?
 
S

SlaterB

Gast
kann man sicherlich irgendwo abfragen oder so:
Code:
public class Test2
{
    public static void main(String[] args) throws Exception
    {
        InputStreamReader e = new InputStreamReader(new FileInputStream("Datei, z.B. Test2.java"));
        System.out.println(e.getEncoding());
    }
}
bei mir
Cp1252
 

Murray

Top Contributor
Vielleicht hilft das:
Code:
public class Test {
	public static void main( String[] args) {
	
		String encoding_undoc = System.getProperty( "file.encoding");
		String encoding_jdk15 = java.nio.charset.Charset.defaultCharset().name();
		String encoding_geek  = new java.io.InputStreamReader( new java.io.ByteArrayInputStream( new byte[0])).getEncoding();
  
		System.out.println( "encoding_undoc: " + encoding_undoc);
		System.out.println( "encoding_jdk15: " + encoding_jdk15);
		System.out.println( "encoding_geek:  " + encoding_geek);
	}
}

Beim (Win-XP deutsch) liefert das:
C:\home\work\070725>java Test
encoding_undoc: Cp1252
encoding_jdk15: windows-1252
encoding_geek: Cp1252
 

benner

Aktives Mitglied
OK danke erstmal.
@ Murray: Ich vermute mal im String encoding_jdk15 steht die Antwort auf meine Frage? Was beinhalten dann die anderen beiden?

Auf Wikipedia steht, dass der Windows-1252-Zeichensatz auf ISO 8859-9 aufbaut, welches in Grundzügen dem ASCII-Code entspricht. Ich möchte den String über den Printwriter an die serielle Schnittstelle schicken, an der ein MEssgerät hängt. Dieses Gerät erwartet die Strings in ASCII-Code. Ich bin jetzt verwirrt. Heißt das das klappt, oder nicht? :roll:
 

deleted

Bekanntes Mitglied
Bei UTF-8 sind z.B. die ersten 128 Zeichen ASCII Code.
Wenn das bei ISO 8859-9 auch so ist, dann sollte es eigentlich kein Problem sein, das einfach so zu senden.
Allerdings darfst du dann nur ASCII senden also kein Ö etc.
Wichtig ist ferner, dass der Beginn des Codes auch wirklich Byteweise codiert ist.
Also das erste Zeichen ist
0001 und nicht z.B. 0000 0001
Das sollte aber im Wikipedia stehen...
 

Murray

Top Contributor
benner hat gesagt.:
@ Murray: Ich vermute mal im String encoding_jdk15 steht die Antwort auf meine Frage? Was beinhalten dann die anderen beiden?

Cp1252 ist der Name, wie er von den Packages java.lang und java.io verwendet wird; windows-1252 ist das gleiche Encoding, aber mit dem Namen, wie er vom Package java.nio verwendet wird. Aus irgendwelchen Gründen gibt es da unterschiedliche Bezeichnungen, siehe hier.
 

benner

Aktives Mitglied
Also ich habe mit jetzt mal in java.nio.charset.Charset umgesehen und da gibt es ja z.B. auch explizit US-ASCII. Das würde ich jetzt gern als Standardzeichensatz einstellen. Nur irgendwie habe ich keine Ahnung wie ich das genau anstellen soll, eine entsprechende Methode wie z.b. "setdefaultcharset()" gibts ja nicht =(

Ich vermute ich muss einen CharsetEncoder verwenden? Aber der ist ja wiederrum an eine Instanz von Charset gebunden, die ich nicht erstellen kann, da ich diese Klasse nicht instanziieren kann. Könnte mir jemand einen Tip geben? Ich brauch das nicht fertig vorgekaut, aber für einen Hinweis wäre ich sehr dankbar. Oder bin ich mit meiner Idee prinzipiell auf dem Holzweg?
 

Murray

Top Contributor
Das Default-Charset kann man wohl nicht umstellen. Man kann allerdings dem PrintWriter bereits im Konstruktor ein Charset mitgeben


javadoc hat gesagt.:
public PrintWriter(File file,
String csn)
throws FileNotFoundException,
UnsupportedEncodingException

Creates a new PrintWriter, without automatic line flushing, with the specified file and charset. This convenience constructor creates the necessary intermediate OutputStreamWriter, which will encode characters using the provided charset.

Stutzig macht man dann allerdings doch die Aussage, in der von dir geposteten Doku, nach dem bei print immer das Default-Encoding genutzt wird. Also besser ausprobieren.
 

Murray

Top Contributor
Wenn du das Encoding komplett in der Hand haben willst, kannst du alternativ auch mit einem (Buffered)OutputStream anstelle des PrintWriter arbeiten und die Strings mit String#getBytes( String charset) vor der Ausgabe selbst in die Binärrepräsentation deiner Wahl umsetzen.
 

benner

Aktives Mitglied
Vielen Dank, ich werd sehen für welche Variante ich mich entscheide, aber sicher beide ausprobieren :###
 

benner

Aktives Mitglied
Hm, also der hier angesprochene Teil funktioniert jetzt, ich kann mir auch hinterher den Bytecode der einzelnen Characters ausgeben lassen, der stimmt jeweils mit der Ascii-Tabelle überein, aber trotzde kommt vom angesprochenen Gerät keine Reaktion...ich danke euch trotzdem für eure Hilfe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java Platform SE7 U7 has crashed Allgemeine Java-Themen 2
S Wie beendet man einen Process in Java Platform unabhänging? Allgemeine Java-Themen 8
V "Java(TM) Platform SE binary funktioniert nicht mehr" Allgemeine Java-Themen 5
N Java(TM) Platform.Warndreieck wegbekommen Allgemeine Java-Themen 8
R Wo ist der Pfad zur "Java(TM) Platform SE" Allgemeine Java-Themen 7
M wie dateien speichern damit sie platform unabhängig sind? Allgemeine Java-Themen 2
K Netbeans Platform Allgemeine Java-Themen 2
W Socket.setSoTimeout -> BufferedReader -> Default value Allgemeine Java-Themen 4
C Theorie Duplicate default methods Allgemeine Java-Themen 5
S @Value mit bestimmt Werten, sonst default Allgemeine Java-Themen 42
S Input/Output Jave.utill.logging ohne Default-Locale also in Englisch Allgemeine Java-Themen 3
S Eclipse TestNG Default Test umbenennen Allgemeine Java-Themen 0
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
Kr0e Reflection - Instanz einer Klasse erstellen, ohne Default-Constructor Allgemeine Java-Themen 15
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
G JAXB "no default constructor" Allgemeine Java-Themen 2
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
G default button für enter taste Allgemeine Java-Themen 3
E Was ist "default package" in Eclipse konkret? Allgemeine Java-Themen 12
T auf Klasse in Default package zugreifen Allgemeine Java-Themen 10
X Default-Werte für Methoden-/Funktions-Parameter Allgemeine Java-Themen 2
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10
R Character.isSpecificLetter Allgemeine Java-Themen 1
P RestTemplate Special Character Problem Allgemeine Java-Themen 4
D character kodierung, barcode für barcode font erzeugen Allgemeine Java-Themen 4
C Character in Integer Allgemeine Java-Themen 12
H Vector<Character> zu char[] castern Allgemeine Java-Themen 2
X sax parse exception invalid XML character Allgemeine Java-Themen 4
V RegEx: Any Character mit Ausnahmen? Allgemeine Java-Themen 2
S Character in String wandeln Allgemeine Java-Themen 9
T Character-Daten von Bit-Daten unterscheiden Allgemeine Java-Themen 4
Fredy JDBC: character Werte aus Tabellenspalten holen?? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben