Avatar billede ferdinand.k Mester
27. februar 2003 - 20:42 Der er 47 kommentarer og
2 løsninger

ANSI karaktere...

Hvordan bruger jeg ANSI karaktere midt i en tekststreng?

f.eks.:
System.out.println("Server venter på klient på port " + server_socket.getLocalPort());

(Den kender naturligvis ikke mine "å"'er...)
Avatar billede arne_v Ekspert
27. februar 2003 - 20:46 #1
Den burde skrive å fint ud ifølge det karakter sæt java bruger.

Snakker vi om en DOS box på en Windows maskine ?
Avatar billede arne_v Ekspert
27. februar 2003 - 20:48 #2
Hvis det er tilfældet så prøv med:

java -Dfile.encoding=Cp850 navnet-på-din-klasse
Avatar billede ferdinand.k Mester
27. februar 2003 - 20:53 #3
det er dos-promt-baseret på en windows maskine...
Avatar billede arne_v Ekspert
27. februar 2003 - 20:56 #4
Så prøv med -Dfile.encoding=Cp850 !
Avatar billede soreno Praktikant
27. februar 2003 - 20:57 #5
Har du sat options til Dansk i "Control panel" -> "Regional and Language Options" (winxp..) ?

Hvis det er på en win9x maskine skal du muligvis loade en codepage (850 eller 865) via config.sys og autoexec.bat.
Avatar billede ferdinand.k Mester
27. februar 2003 - 21:07 #6
det er en xp maskine, og jeg har de rigtige indstillinger i kontrolpaneler (har lige kigget). didn't work...

hvad går dit:
java -Dfile.encoding=Cp850 tcpServer.java
ting ud på?
Avatar billede arne_v Ekspert
27. februar 2003 - 21:09 #7
Det fortæller Java at den skal bruge DOS karakter-sæt.
Avatar billede arne_v Ekspert
27. februar 2003 - 21:09 #8
Det plejer at løse problemet.
Avatar billede soreno Praktikant
27. februar 2003 - 21:11 #9
Jeg har lige prøvet med:
public class Main
{
    public static void main(String args[])
    {
        System.out.println("æÆøØåÅ");
    }
}

Garbage med:
java Main

Korrekt visning med:
java -Dfile.encoding=Cp850 Main
Avatar billede ferdinand.k Mester
27. februar 2003 - 21:30 #10
det virker også når jeg skriver i dos'en, men det virker ikke med det tekst der står "hard-kodet" gennem min system.out.println()... det står stadig "õ" for mine "å"'er...!

:(
Avatar billede arne_v Ekspert
27. februar 2003 - 21:47 #11
Hvis du prøver med f.eks. Sørens lille program - er alle 6 tegn
så forkerte eller ?
Avatar billede ferdinand.k Mester
27. februar 2003 - 21:54 #12
ja...

men kan det have noget at gøre med at jeg har 2 java versioner indstalleret? både 1.3.1_01 og 1.4??
Avatar billede soreno Praktikant
27. februar 2003 - 21:57 #13
Hvis du prøver følgende:
java -version

Kan du se hvilke version du bruger til at køre programmet fra.

Hos mig er output:
D:\$temp\download>java -version
java version "1.4.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
Avatar billede arne_v Ekspert
27. februar 2003 - 21:59 #14
Hvilken editor bruger du til at skrive koden med ?

Jeg tror faktisk at det er ret ens for både 1.3.1 og 1.4.1
på Windows (jeg har hørt at de ændrede noget i 1.4.1 på Linux, men ...).
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:00 #15
hmm weird... 'Java'
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:00 #16
ups...
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:03 #17
jeg installerede lige min 1.3.1 pakke igen på maskinen, og nu virker det lidt bedre, men den skriver stadig õ for mine å'er...

den dér: java -Dfile.encoding=Cp850 tcpServer bruges kun til at afvikle filen gennem en formatering, ik'? det ser sgu ikke ud til at virke...
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:04 #18
jeg bruger TextPad 4.6.2
Avatar billede arne_v Ekspert
27. februar 2003 - 22:05 #19
Hvordan ser dine ÆØÅ ud i standard Notepad ?
Avatar billede arne_v Ekspert
27. februar 2003 - 22:06 #20
Og hvad er forskellen præcis på 1.4 og 1.3.1 ?
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:09 #21
de ser sgu fine ud... ingen problemer...

jeg kender ikke forskellen mellem de to, men da jeg skulle reinstallere min maskine, kunne jeg ligesåp godt bruge den nyeste version... dog fandt jeg nogle fejl, så jeg installerede den gamle oveni, men det kan godt være at den har lavet ravage et sted... derfor fjernede jeg begge, genstartede, og installerede igen 1.3.1_01 versionen...
Avatar billede arne_v Ekspert
27. februar 2003 - 22:12 #22
Du skrev "jeg installerede lige min 1.3.1 pakke igen på maskinen, og nu
virker det lidt bedre".

Før var alle 6 tegn forkerte.

Når du skriver lidt bedre formoder jeg at der er nogen der er
korrekte.

Har jeg forstået det rigtigt ? Og hvis ja - hvilke er forkerte
og hvilke er rigtige ?
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:14 #23
før da jeg skrev java -version eller bare et eller andet med java i min promt, kom den med en fejlmeddelelse... nu viser den versionsnummer som den skal... deri ligger forskellen...!
Avatar billede arne_v Ekspert
27. februar 2003 - 22:16 #24
Så alle 6 tegn er stadig forkerte selvom de ser rigtige ud notepad ?
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:18 #25
korrekt!
Avatar billede arne_v Ekspert
27. februar 2003 - 22:20 #26
Og de er helt ens med og uden -Dfile.encoding=Cp850 ?
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:21 #27
korrekt!
Avatar billede arne_v Ekspert
27. februar 2003 - 22:30 #28
Meget mystisk.

lille å er lille o med tilde over

hvad er de andre 5 ?
Avatar billede =maddog= Nybegynder
27. februar 2003 - 22:30 #29
jeg kan heller ikke få det til at virke på min maskine selvom jeg bruger
System.setProperty("file.encoding","Cp850");
hvilket i grunden er mystisk.
Avatar billede =maddog= Nybegynder
27. februar 2003 - 22:31 #30
mu (græsk m) for æ og gradtegn for ø
Avatar billede arne_v Ekspert
27. februar 2003 - 22:36 #31
Hvad skriver dette program:

public class Main {
    public static void main(String args[]) {
        System.out.println(System.getProperty("file.encoding"));
        System.out.println("æÆøØåÅ");
    }
}

ud med og uden -Dfile.encoding=Cp850 ?
Avatar billede arne_v Ekspert
27. februar 2003 - 22:38 #32
Og hvad er output fra:
  java -version
?
Avatar billede arne_v Ekspert
27. februar 2003 - 22:38 #33
maddog siden du kan genskabe problemet må du også meget gerne svare.
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:40 #34
java version "1.3.1_01" bla bla
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:41 #35
det hjælper heller ikke.. det tilføjer bare en linie i starten med "CP1252"
Avatar billede arne_v Ekspert
27. februar 2003 - 22:42 #36
Ja - forhåbentligt kun uden -Dfile.encoding=Cp850 !

Med skulle den gerne skrive Cp850 !!

Ikke ?
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:48 #37
når jeg kører den gennem java D-file.encoding=Cp850 Main bla bla, skriver den Cp850 i første linie, og de næste 6 mærkelige tegn i næste linie...
Avatar billede =maddog= Nybegynder
27. februar 2003 - 22:51 #38
Vi er 100% enige arne_v. Det BURDE virke. I mit tilfælde kan jeg ikke rigtig svare for hvad der går galt. Det nedstående program giver følgende output

Cp1252
Cp1252
Cp850
mu-grad-õ
mu-grad-õ

Hvorfor må guderne vide. Jeg er på en Win98UK maskine.

import java.io.*;
public class CharsetTest {
    public static void main(String[] args) {
        System.out.println(System.getProperty("file.encoding"));
        System.out.println(System.setProperty("file.encoding","Cp850"));
        System.out.println(System.getProperty("file.encoding"));
        System.out.println("æøå");
        OutputStreamWriter osw;
        try {
            osw = new OutputStreamWriter(System.out, "ISO-8859-1");
        } catch (java.io.UnsupportedEncodingException ue) {
            System.err.println(ue.getMessage());
            return;
        }
        try {
            osw.write("æøå"+'\n');
        } catch (java.io.IOException ie) {
            System.out.println(ie.getMessage());
        } finally {
            try {
                osw.flush();
                osw.close();
            } catch (java.io.IOException ie) {
                System.out.println(ie.getMessage());
            }
        }
    }
}
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:53 #39
så er det ikke bare mig der er skør? :)
Avatar billede arne_v Ekspert
27. februar 2003 - 22:54 #40
maddog>

Hvad får du med:
  osw = new OutputStreamWriter(System.out, "Cp850");
?
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:56 #41
det ser sgu ud til at hjælpepå det...
Avatar billede arne_v Ekspert
27. februar 2003 - 22:56 #42
ferdinand>

Vi er helt klar over at problemet er reelt nok.

Vi har bare meget svært ved at finde en løsning, fordi problemet
på mystisk vis kan løses med -Dfile.encoding på min og Sørens
PC men ikke på din og maddog's.
Avatar billede =maddog= Nybegynder
27. februar 2003 - 22:56 #43
DET VIRKER.
import java.io.*;
public class CharsetTest {
    public static void main(String[] args) {
        OutputStreamWriter osw;
        try {
            osw = new OutputStreamWriter(System.out, "Cp850");
        } catch (java.io.UnsupportedEncodingException ue) {
            System.err.println(ue.getMessage());
            return;
        }
        try {
            osw.write("æøå"+'\n');
        } catch (java.io.IOException ie) {
            System.out.println(ie.getMessage());
        } finally {
            try {
                osw.flush();
                osw.close();
            } catch (java.io.IOException ie) {
                System.out.println(ie.getMessage());
            }
        }
    }
}
giver
æøå
GULD. Fanden man ikke kan ligge 2 og 2 sammen selv
Avatar billede ferdinand.k Mester
27. februar 2003 - 22:57 #44
min udskriver således:
Cp1252
Cp1252
Cp850
uoÕ
æøå
Avatar billede arne_v Ekspert
27. februar 2003 - 22:59 #45
Godt.

Så har I da en måde at få skrevet ÆØÅ ud på.

Men jeg undrer mig stadigvæk over at det andet virker på 2 PC'ere
men ikke på 2 andre.

Jeg hader når jeg ikke forstår logikken i noget.
Avatar billede =maddog= Nybegynder
27. februar 2003 - 23:01 #46
arne_v: Me too. Grunden til at programmering er min hobby i stedet for stramaj er at computere ved man hvor man har. Hvis de fejler er det din egen skyld. Dette er en irriterende undtagelse.
Skal vi dele de 15 point...
Avatar billede ferdinand.k Mester
27. februar 2003 - 23:05 #47
det synes jeg lyder som en forrygende ide.. i har sgu gjort et fremragende stykke arbejde... :)
Avatar billede =maddog= Nybegynder
27. februar 2003 - 23:09 #48
ferdinand> Jeg ville lave en lille statisk klasse til at styre udskrivningen hvis jeg var. Rent faktisk tror jeg at jeg gør det selv lige nu, for min fornemmer siger mig at jeg får brug for det. Jeg poster den i denne tråd og lidt tid når jeg er færdig.
Jeg fatter det stadig ikke. System.out burde i realiteten samle alting i et batch job og skrive det ud med en OutputStreamWriter med den i properties angivne encoding.
Nåmen. Det er nok ikke alting man kan (eller skal) forstå.
Avatar billede =maddog= Nybegynder
27. februar 2003 - 23:39 #49
import java.io.*;

public class CharsetTest {
    public static void main(String[] args) {
        EncodedOutput.println("æøå");
        EncodedOutput.close();
    }
}

class EncodedOutput {
      private static EncodedOutput wrapper;
      private static OutputStreamWriter osw = null;
      private static String charset;

      public static void open(String cs) {
          charset = cs;
          wrapper = new EncodedOutput(cs);
      }
      public static void open() {
          charset = "Cp850";
          open(charset);
      }
     
      public static void print(String input) {
          if (wrapper==null) open();
        try {
            osw.write(input);
        } catch (java.io.IOException ie) {
            ie.fillInStackTrace();
        }
    }

      public static void println(String input) {
          print(input+'\n');
    }
   
      public static void close() {
        try {
            osw.flush();
            osw.close();
        } catch (java.io.IOException ie) {
            ie.fillInStackTrace();
        }
    }             

      private EncodedOutput(String cs) {
        try {
            osw = new OutputStreamWriter(System.out, cs);
        } catch (java.io.UnsupportedEncodingException ue) {
            ue.fillInStackTrace();
        }

    }
}

Håber du kan bruge den til noget
Husk at lukke efter dig (noget System kan gøre automatisk, men vi ikke kan)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester