Avatar billede morteeart Nybegynder
03. december 2004 - 12:19 Der er 10 kommentarer og
1 løsning

danske special tegn i java (console)

Hey

et lille hurtigt spm. mere

I dette her irc-bot som jeg har gang i, der sker det underligt at når jeg bruger f.eks. æ så bliver det til `
hvorfor aner jeg ikke, men der må væren en alle anden løsning på det.

[souce]
/**
IRC-bot v.1
@author: Claus Jørgensen
@date 30.10.04

Kommandoliste:

!uptime , viser bottens egen uptime

*/

import java.io.*;
import java.net.*;
import java.util.Date;
import java.text.DateFormat;
import java.sql.*;

public class ircbot {

    public static void main(String[] args) throws Exception {

        // Laver sockets og buffers

        Socket ircSocket = null;
        PrintWriter out = null;
        BufferedReader in = null;

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // Variabler
        System.out.print("Indtast server: \n");
          String IRCserver = br.readLine();                      // IP'en til serveren
        System.out.print("Indtast port: \n");
          int IRCport = Integer.parseInt(br.readLine());          // Porten til IRC-serveren
        String RealName = "Teh 1337 Java-Bot, by TheDeathArt";    // Beskrivelse af botten
        System.out.print("Indtast botnick: \n");
          String IRCnick = br.readLine();                        // Bottens nick
        System.out.print("Indtast channel: \n");
          String IRCchannel = br.readLine();                      // Den channel botten skal joine
        String line;

        // Laver en starttid til !uptime funktionen

        long starttime = System.currentTimeMillis();

        // Åbner en socket til irc netværket

        try {
            ircSocket = new Socket(IRCserver , IRCport);
            out = new PrintWriter(ircSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(ircSocket.getInputStream()));
        } catch (UnknownHostException e) {
            System.err.println("Kunne ikke finde: " + IRCserver);
            System.exit(1);
        }

        while((line = in.readLine()) != null) { // Så længe at der ikke kommer null, så vil vi udskrive teksten.

        System.out.println(line);  // Udskriver Teksten !

        // Registerer botten med netværket

    if(line.indexOf("No ident respons") > 0)
        {
        out.println("USER " + IRCnick  + " none none : " +  RealName );
        out.println();
        out.println("NICK " + IRCnick);
        out.println();
        }

        // Joiner en channel når MOTD er færdig

    if(line.indexOf("End of /MOTD command.") > 0)
        {
        out.println("JOIN " + IRCchannel);
        out.println();
        out.println("PRIVMSG " + IRCchannel + " : Hi, im a Java-IRC bot created by TheDeathArt.");
        }

        /* Ping-Pong servicen, sørger for at holde botten online */

    if(line.startsWith("PING"))
        {
            out.println("PONG " + line.substring(5));
            System.out.println("Ping? Pong!");
        }

        /* checker for !uptime */

    if(line.indexOf("!uptime") > 0)
        {
            long uptime = (System.currentTimeMillis() - starttime) / 1000;
            out.println("PRIVMSG " + IRCchannel + " : Min Uptime er " + uptime + " sek. ");
        }

        /* sætter topic */

    if(line.indexOf("!topic") > 0)
        {
            int topicpos = line.indexOf("!topic") + 7;
            String newtopic = line.substring(topicpos);
            out.println("TOPIC " + IRCchannel + " :" + newtopic);
        }

        /* viser hvad klokken er */

        if(line.indexOf("!time") > 0)
    {
        Date now = new Date();
        DateFormat nowTime = DateFormat.getTimeInstance();
        out.println("PRIVMSG " + IRCchannel + " : " + nowTime.format(now));
    }

        /* siger det som står efter !say */

    if(line.indexOf("!say") > 0)
        {
            int msgpos = line.indexOf("!say") + 5;
            String newmsg = line.substring(msgpos);
            out.println("PRIVMSG " + IRCchannel + " :" + newmsg);
        }

        /* lukker botten */

    if(line.indexOf("!quit") > 0)
        {
            out.println("QUIT : Farvel, og tak for denne gang");
        out.close();
        in.close();
        ircSocket.close();
        System.exit(0);
        }

        if(line.indexOf("!auth") > 0)
        {
            out.println("PRIVMSG @CServe.quakenet.org :auth thedeathart sf2yq3in");
        }


        }


        // Lukker sockets igen.

    out.close();
    in.close();
    ircSocket.close();
    }
}
[/souce]
Avatar billede arne_v Ekspert
03. december 2004 - 12:21 #1
Du kan prøve med:

java -Dfile.encoding=Cp850 DitProgram
Avatar billede arne_v Ekspert
03. december 2004 - 12:23 #2
Kræver at din console er sat til codepage 850 (og ikke 437).

Og hvis Øø skal korrekt ud skal du skifte skrift type til Lucida font.
Avatar billede morteeart Nybegynder
03. december 2004 - 13:00 #3
hmm.

I min console vindue ser det rigtigt ud.
på IRC er det stadig ` istedet for æ.

Så jeg skal nok sende noget andet istedet for æ.

Jeg har også snakket med folk på irc, og der skal ikke sendes noget specielt til irc for at det virker, så det må være java som handler æøå anderledes end irc.
Avatar billede arne_v Ekspert
03. december 2004 - 13:06 #4
Programmet skriver korrekt ud i konsollen men forkert ud på nettet ?

Hvilken editor/IDE har du skrevet programmet i ?

Hvis det er et normalt windows program så bør ÆØÅ ikke se korrekt ud i
et console vindue.
Avatar billede morteeart Nybegynder
03. december 2004 - 13:18 #5
Programmet skriver korrekt ud i konsollen men forkert ud på nettet ?

ja, nemlig, finder det også lidt underligt.

programmet er skrevet i en notepad clon, og det er alm. windows cmd.
Avatar billede morteeart Nybegynder
03. december 2004 - 13:35 #6
fandt lige ud af nogeT:

når jeg beder botten (fra irc) om at sige:

æøå

siger den:

µ°Õ

Så det må være noget tegnsæt forvirring.
Avatar billede arne_v Ekspert
03. december 2004 - 14:21 #7
Hvordan ser det ud hvis botten køres med -Dfile.encoding=Cp850 ?

(og vinduet er i CP 850 )
Avatar billede morteeart Nybegynder
03. december 2004 - 18:21 #8
-Dfile.encoding=Cp850 gør absolut ingen forskel.
Avatar billede arne_v Ekspert
04. december 2004 - 01:47 #9
Og vinduet er i CP850 mode og ikke 437 ?
Avatar billede morteeart Nybegynder
10. december 2004 - 20:08 #10
har fundet en alt. metode at gøre det på, ved at styre alt charset fra IRC, og derfor betyder det ikke noget mere.

Men du skal da have points for indsatsen.
Avatar billede arne_v Ekspert
10. december 2004 - 23:00 #11
så må jeg jo hellere ligge et svar
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