webForumDet fria alternativet

Svenska tecken i program

12 svar · 754 visningar · startad av hema80

hema80Medlem sedan sep. 2004137 inlägg
#1

När ni skapar konsollbaserade program, hur gör ni då med våra svenska tecken ÅÄÖ åäö? Tecken utanför ASCII-standarden blir ju olika i Windows och DOS.

Om tex ordet räksmörgås ska skrivas ut. Likaså, om ni skriver kommentarer på svenska så blir ju dom svenska tecknen fel där också.

* Använder ni helt enkelt en DOS-editor?

* Man kan ju skapa ett program som tar emot tecken och skriver ut dess tecken-kod. Man kör programmet i DOS och erhåller teckenkoden för ÅÄÖ åäö respektive.

Sen kan man ju göra en typomvandling i det programmet som ÅÄÖ åäö ska användas. Man skapar char-variablar och ger dom värdet på teckenkoden. Såhär:
char swe1 = (char)123;

Sen får man använda char-variablarna i texten.

Men det verkar bökigt juh ...................

Någon bra lösning?

spangoMedlem sedan juni 20008 205 inlägg
#2

Det enklaste är att ange från kommandoraden vilken kodning man vill använda.

java [b]-Dfile.encoding=CP-850[/b] Foo bar baz quux

Då ändrar man defaultkodningen från Windows (normalt latin-1/ISO-8859-1) till DOS (CP-850). Detta får då nackdelen att alla ev. filer man skriver till blir i DOS-format också.

PersianBulldogMedlem sedan aug. 20023 005 inlägg
#3

spango skrev:

Det enklaste är att ange från kommandoraden vilken kodning man vill använda.

... sedan kan man använda en mer nybörjarmässig och invecklad metod som innefattar användning av Ctrl + H, vid avslutad programmeringsession.

† (å)  „ (ä) ” (ö)

Men spangos lösning var (självklart) mycket bättre.

hema80Medlem sedan sep. 2004137 inlägg
#4

spango skrev:

Det enklaste är att ange från kommandoraden vilken kodning man vill använda.

java [b]-Dfile.encoding=CP-850[/b] Foo bar baz quux

Då ändrar man defaultkodningen från Windows (normalt latin-1/ISO-8859-1) till DOS (CP-850). Detta får då nackdelen att alla ev. filer man skriver till blir i DOS-format också.

Du kan inte förklara det där liite mer pedagogiskt? Jag är gammal Macanvändare, således inte alls hemma i DOS-kommandon. Är också nybörjare på java.

LimeMedlem sedan sep. 2001961 inlägg
#5

Det finns... nä vänta... man ska inte upprepa sig.. ;)

spangoMedlem sedan juni 20008 205 inlägg
#6

hema80 skrev:

spango skrev:

Det enklaste är att ange från kommandoraden vilken kodning man vill använda.

java [b]-Dfile.encoding=CP-850[/b] Foo bar baz quux

Då ändrar man defaultkodningen från Windows (normalt latin-1/ISO-8859-1) till DOS (CP-850). Detta får då nackdelen att alla ev. filer man skriver till blir i DOS-format också.

Du kan inte förklara det där liite mer pedagogiskt? Jag är gammal Macanvändare, således inte alls hemma i DOS-kommandon. Är också nybörjare på java.

Flaggan -Dx=y till JVM:en sätter en s.k. system property x till värdet y. (Alla flaggor som kommer innan namnet på klassen eller jar-filen man vill köra går till JVM:en.)

file.encoding som vi använder i det här fallet är en standardegenskap som normalt innehåller systemets favoritkodning av teckenströmmar (på svenska holkar oftast ISO-8859-1, en 8-bitars teckenkodning med stöd för nord- och västeuropeiska tecken).

Teckenströmmar är det som används för att skriva ut javasträngar (som internt är 16-bitars Unicode alias UTF-16) till bl.a. filer och kommandotolken. Eftersom det vore opraktiskt att tvinga alla javaanvändare att använda UTF-16 i sina filer kan man välja vilken teckenkodning som strömmarna man använder ska konvertera strängar till, och om man inte väljer själv i programkoden används den teckenkodning som finns angiven i file.encoding. Så om vi sätter det till DOS-kodningen, CP-850, får vi ut allting i DOS-format - texten som skrivs i kommandotolken (som då ser normal ut) och texten som skrivs till filer (som ser ut som bajs om man öppnar med t.ex. Notepad).

hema80Medlem sedan sep. 2004137 inlägg
#7

Eh? När man kompilerar filen i kommandoprompten så skickar man med "extra kommandon" så att programmet körs med en annan teckentabell?

spangoMedlem sedan juni 20008 205 inlägg
#8

Nej, inte när du kompilerar, när du startar programmet. Precis som jag exemplifierade ovan.
java -Dfile.encoding=CP-850 Klassen arg1 arg2 etc

hema80Medlem sedan sep. 2004137 inlägg
#9

Så om jag vill ha samma teckenuppsättning som finns i Windows för mitt program jag ska köra i DOS så skriver jag vad? Och varför?

Du är säkert jätte duktig på Java och har hållt på i flera år. Jag har precis börjat, du får försöka komma ner till min nivå.

"java -Dfile.encoding=CP-850 Foo bar baz quux" säger mig inte så himla mycket. Skulle Foo vara klassen och det andra så kallade parametrar eller vad försöker du säga?

Och om man har java-källkod skriven i ett program (tex JPAD PRO) i Windows, kompilerar genom att skriva "javac programnamn" i DOS, får sen en class-fil och kan köra den i DOS med Windows teckentabell. Om man nu gör detta - hur påverkar det då andra filer som du säger? Du snackar om att andra filer "blir bajs i notepad".

Nån annan får jätte gärna hoppa in och hjälpa till att reda ut.

Jag tackar Spango för hjälpen men jag förstår den inte.

spangoMedlem sedan juni 20008 205 inlägg
#10

hema80 skrev:

Så om jag vill ha samma teckenuppsättning som finns i Windows för mitt program jag ska köra i DOS så skriver jag vad?

Ingenting.

hema80 skrev:

Och varför?

Därför att JVM:en faller tillbaka på systemets default-kodning, latin-1 eller vad du nu har. Oavsett vilket är detta inte samma som används i kommandotolken. Använder programmet Windows defaultkodning blir åäö skräptecken i kommandotolken. (Löses normalt genom att man struntar i det.)

hema80 skrev:

"java -Dfile.encoding=CP-850 Foo bar baz quux" säger mig inte så himla mycket. Skulle Foo vara klassen och det andra så kallade parametrar eller vad försöker du säga?

Ja, precis. Det efter "Foo" är det som hamnar i String[]-vektorn som skickas till main-metoden, bara ett exempel...

hema80 skrev:

Och om man har java-källkod skriven i ett program (tex JPAD PRO) i Windows, kompilerar genom att skriva "javac programnamn" i DOS, får sen en class-fil och kan köra den i DOS med Windows teckentabell. Om man nu gör detta - hur påverkar det då andra filer som du säger? Du snackar om att andra filer "blir bajs i notepad".

Kompileringen har inget med saken att göra. Inget, nada, nicht.

Om du skriver till en fil från ett program som körs med CP-850 (enligt ovan) som kodning, kommer innehållet i dessa filer att bli kodat CP-850 också. Öppnar du en sådan fil med Notepad (som använder Windows teckenkodning latin-1) blir åäö till skräptecken. Eftersom kommandotolken använder en annan teckenupsättning än Windows allmänt.

Kort sagt: Skit i att det inte ser bra ut i kommandotolken.

hema80Medlem sedan sep. 2004137 inlägg
#11

Ok men det blir fel i alla fall.
http://portal2.mh.se/~hema0400/fel.gif

spangoMedlem sedan juni 20008 205 inlägg
#12

Jaha, typiskt, här har man suttit och babblat och så har de tagit bort stödet för den kodningen ur standardbiblioteket :)
Det går nog fortfarande att få till, men jag tror att det kanske är mer besvär än det är värt...
Som synes finns Cp-850 numera i "extended encoding set" :l

hema80Medlem sedan sep. 2004137 inlägg
#13

Ehum ok. Ja men tack ändå. :)

142 ms totalt · 3 externa anrop · v20260731065814-full.30151723
138 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)