/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Initiering af string med hex værdier
Fra : Finn L


Dato : 18-05-04 07:39

Hej alle

Jeg har brug for at kunne initiere en String med en hex værdi og skrive den
til en fil.
Følgende virker fint med hex værdier op til 7F.
Alle værdier derover ændres.
Jeg har hidtil troet at det var selve initieringen, men det kan jo
selvfølgelig også være den måde, jeg skriver filen på. Hvad skal der evt.
ændres?

String text="\u0080" + "\u0083";
String Filnavn = "Minfil.txt";
StringBuffer Filnavnbuf = new StringBuffer(Filnavn);
File MinEgenFil = new File(Filnavnbuf.toString());
BufferedWriter Output = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(MinEgenFil)));
Output.write(test, 0, test.length());
Output.close();

venlig hilsen Finn



 
 
Ukendt (18-05-2004)
Kommentar
Fra : Ukendt


Dato : 18-05-04 09:13

Hej Finn,

Nu er \u0080 og \u0083 ikke de mest synlige tegn jfr.
http://www.unicode.org/charts/PDF/U0080.pdf - men du bør måske overveje at
encode din OutputStream - det virker som om benytter US-ASCII encoding, og
så kommer 8-bit+ (altså alt over 0x7F) ikke ud som det man skulle forvente.
Prøv ISO-8859-1 (Latin1) eller UTF-8 - givet at dit OS og din JDK
naturligvis understøtter det. Yep, man kan løbe ind i "Unknown encoding"
eller hva' den nu hedder.

Du kan også prøve at opsætte din udviklingsmaskines default encoding til
andet end US-ASCII.

/nobody important


"Finn L" <finn@lindhart.com> wrote in message
news:40a9afbe$0$225$edfadb0f@dread12.news.tele.dk...
> Hej alle
>
> Jeg har brug for at kunne initiere en String med en hex værdi og skrive
den
> til en fil.
> Følgende virker fint med hex værdier op til 7F.
> Alle værdier derover ændres.
> Jeg har hidtil troet at det var selve initieringen, men det kan jo
> selvfølgelig også være den måde, jeg skriver filen på. Hvad skal der evt.
> ændres?
>
> String text="\u0080" + "\u0083";
> String Filnavn = "Minfil.txt";
> StringBuffer Filnavnbuf = new StringBuffer(Filnavn);
> File MinEgenFil = new File(Filnavnbuf.toString());
> BufferedWriter Output = new BufferedWriter(
> new OutputStreamWriter(new FileOutputStream(MinEgenFil)));
> Output.write(test, 0, test.length());
> Output.close();
>
> venlig hilsen Finn
>
>



Soren Kuula (21-05-2004)
Kommentar
Fra : Soren Kuula


Dato : 21-05-04 20:15

Finn L wrote:
> Hej alle
>
> Jeg har brug for at kunne initiere en String med en hex værdi og skrive den
> til en fil.
> Følgende virker fint med hex værdier op til 7F.

SKRÅÅÅÅÅÅÅÅK ! Character Encoding ! Character Encoding ! SKRÅÅÅÅÅÅÅÅK !

>>baf!<< - så nu fik jeg den papegøje til at holde næbbet.

--

Nå, men en karakter (char) er et symbol i et skriftsprog. For at
få computere til at kunne arbejde med disse, kodes hver karakter
om til et tal (det er der mange måder at gøre på), og når det skal
skrives i filer kodes disse tal om til en eller flere bytes hver.

Eksempler : US-ASCII : Der er kun ca. 100 karakterer repræsenteret.
De kodes til tal mellem 32 og 127. Disse tal kodes til bytes med
samme værdi.

ISO-1189-1 : Ca. 220 karakterer. Kodes til tal mellem 0 og 255. Disse
tal kodes til bytes med samme værdi.

GB-2312-1980 : Ca 10000 kinesiske tegn, og US-ASCII, og nogle andre
kodes til talpar (a,b) eller tal (a). Alle disse kodes til en byte,
eller to bytes.

Unicode : Ca. 60000 tegn kodes til tal mellem 0 og ... øøh, ca. 60000.
Disse kodes til bytes på en af nogle forskellige måder:
UTF-8: en, to eller tre bytes pr. tal
UTF-16LE: to bytes pr. tal,
UTF-16BE: to bytes pr. tal, men modsat rækkefølge.
(se www.unicode.org)

Det bliver nu hurtigt forvirrende når men f. eks. ikke er helt sikker på
hvilken encoding ens programmer bruger til at fortolke ens filer efter
når man indlæser, eller til at kode med når programmet skriver igen. Dog
kan det tvangsstyres i f x Java.

Morale : Brug Strings og chars til at repræsentere tegn og andre
sproglige småkomponenter

-- og kun det !

MVH
Søren

--
Fjern de 4 bogstaver i min mailadresse som er indsat for at hindre s...
Remove the 4 letter word meaning "junk mail" in my mail address.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408917
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste