Avatar billede tri Nybegynder
18. september 2002 - 09:31 Der er 12 kommentarer og
1 løsning

SetEncoding?

Hvordan får jeg læst en fil med en bestemt encoding?

File fil;
FileInputStream is = null;
BufferedReader dis = null;

is = new FileInputStream(fil);
dis = new BufferedReader(new InputStreamReader(is));
String line = dis.readLine();

Jeg vil gerne bruge MS-DOS encoding!

Men hvordan?
Avatar billede disky Nybegynder
18. september 2002 - 17:35 #1
Din InputStreamReader, kan kaldes med et charset, eller charsetencoder parameter.
Avatar billede tri Nybegynder
03. oktober 2002 - 14:08 #2
Disky:

Kender du den rigtige encoding?

Alle min æøå'er er nemlig ?-tegn.

Det er denne linje der skal rettes:
Charset charset = Charset.forName("UTF8");



import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.ReadableByteChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.util.Vector;

public class CharSetTest {

    public static void main(String[] args) {

        try {

        File fil;
        FileInputStream is = null;
        BufferedReader dis = null;
        fil = new File("c:\\code.txt");
        is = new FileInputStream(fil);
        dis = new BufferedReader(new InputStreamReader(is));
        ReadableByteChannel source = is.getChannel();
        Charset charset = Charset.forName("UTF8");
        CharsetDecoder decoder = charset.newDecoder();
        ByteBuffer bb = ByteBuffer.allocateDirect(2048);
        CharBuffer cb = CharBuffer.allocate(2048);

        while (source.read(bb) != -1) {
            bb.flip();
            decoder.decode(bb, cb, true);
            cb.flip();
            System.out.println(cb);
            cb.clear();
            bb.clear();
        }
        source.close();
        System.out.flush();
    }

    catch (Exception e) {e.printStackTrace();}
}
}
Avatar billede disky Nybegynder
03. oktober 2002 - 14:27 #3
Hvilket format er din fil gemt i ?

Hvis det bare en en dos text fil skulle du vælge ISO8859-1
Avatar billede tri Nybegynder
03. oktober 2002 - 15:04 #4
når jeg åbner filen med notepad, ser den underlig ud.

Hvis jeg åbner den med word, så spørger word hvilken kodning der skal bruges til at åbne den.
Hvis jeg vælger "MS-DOS", så bliver alle characterer fine.


Jeg har lige forsøgt med Charset charset = Charset.forName("ISO8859-1"); Det virkede ikke!
Avatar billede disky Nybegynder
03. oktober 2002 - 21:40 #5
hmmm mystisk, jeg kan ikke svare på hvad for en encodind du skal vælge, hvilket program har lavet filen ?
Avatar billede tri Nybegynder
14. oktober 2002 - 09:52 #6
disky:

Har du tid til at kigge på txt filen, hvis jeg sender den til dig?
Avatar billede disky Nybegynder
14. oktober 2002 - 10:09 #7
Det må du gerne, send den til disky@hotmail.com

Og post lige her når du har gjort det.
Avatar billede tri Nybegynder
14. oktober 2002 - 10:46 #8
så er den sendt.
Avatar billede disky Nybegynder
14. oktober 2002 - 10:59 #9
gider du lige igen ?

Min hotmail konto var fyldt af spam :(
Avatar billede tri Nybegynder
14. oktober 2002 - 11:01 #10
sådan :-)
Avatar billede disky Nybegynder
14. oktober 2002 - 11:32 #11
Og her er løsningen :-)

Magien sker i denne linie:
dis = new BufferedReader(new InputStreamReader(is,"Cp865"));

Løsningen fandt jeg her:
http://java.sun.com/j2se/1.3/docs/guide/intl/encoding.doc.html



/*
* Encoder.java
*
* Created on 14. oktober 2002, 11:18
*/

import java.io.*;

/**
*
* @author  Reinke
* @version
*/
public class Encoder
{
   
    /** Creates new Encoder */
    public Encoder()
    {
        File fil=new File("d:\\text.txt");
        FileInputStream is = null;
        BufferedReader dis = null;
        try
        {
            is = new FileInputStream(fil);
            dis = new BufferedReader(new InputStreamReader(is,"Cp865"));
            String line=dis.readLine();
            System.out.println("Line = "+line);
        }
        catch(IOException e)
        {
        }
       
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new Encoder();
    }
   
}
Avatar billede tri Nybegynder
14. oktober 2002 - 11:38 #12
takker.
Og sitet er gemt i foretrukne :-)
Avatar billede disky Nybegynder
14. oktober 2002 - 11:40 #13
hehe :)
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