Avatar billede aslan Nybegynder
14. juni 2005 - 13:50 Der er 9 kommentarer

Problemer med encoding?

Danske tegn som åæø bliver til ? tegn. Jeg forstår bare ikke hvorfor?
Jeg har forsøgt at sætte encoding til iso-8859-1 på request, men uden held. Jeg har brugt Commons FileUpload.

Jeg gør således:


Jeg har en form:

<form action="pressUploadSave.jsp" method="post" enctype="multipart/form-data">

    <table>
        <tr>
            <td valign='top'>
                <b>Overskrift1</b><br />
                <input type="text" name="overskrift1" size="70"><br />
            </td>
        </tr>   
        <tr>
            <td valign='top'>
                <b>Overskrift2</b><br />
                <textarea cols="55" rows="5" name='overskrift2'></textarea><br />
            </td>
        </tr>   
        <tr>
            <td align="left">
            <b>V&aelig;lg PDF file :</b></td>
        </tr>
        <tr>
            <td align="left">
                <input type="file" name="uploadfile" value="Find fil" size="50">
            </td>
        </tr>
        <tr>
            <td><input type="submit" value="Opret" name="Opret"></td>
        </tr>
    </table>

</form>




Der kalder pressUploadSave.jsp som indeholder:

new FileHandler().saveFile(request);
response.sendRedirect("pressList.jsp");




Selve saveFile metoden i FileHandler klassen seer således ud:


public void saveFile(HttpServletRequest request){

String overskrift1 = null;
String overskrift2 = null;

try{

    request.setCharacterEncoding("ISO-8859-1");

    DiskFileUpload upload = new DiskFileUpload();
    List fileList = upload.parseRequest(request);

    int fileCount = fileList.size();
    for(int i=0; i<fileCount; i++) {

        FileItem file = (FileItem)fileList.get(i);

        if(file.getFieldName().equals("overskrift1")) {
            overskrift1 = file.getString();
        }
        if(file.getFieldName().equals("overskrift2")) {
            overskrift2 = file.getString();
        }
        if(file.getFieldName().equals("uploadfile")) {
            String fileName = file.getName();
            fileName = fileName.toLowerCase();
            if(!fileName.endsWith(FILE_EXTENSION)){
                log.error("The file has wrong format");
            } else{

                int key = DBPress.createPress(overskrift1,overskrift2);
                file.write(new File(PATH+key+FILE_EXTENSION));
            }
        }
    }
}catch (Exception e){
    log.error("Error in saveFile",e);
}

}


Har nogen et forslag til hvordan jeg får løst det her?
Avatar billede arne_v Ekspert
14. juni 2005 - 14:28 #1
er du siker på at filerne ikke kommer op som ISO-8859-1 men at du kigger på dem
som UTF-8 når du ser de '?' tegn ?
Avatar billede aslan Nybegynder
14. juni 2005 - 14:43 #2
Ja, når jeg kigger i db så er alle åæø tegn blevet lavet om til ? tegn.
Avatar billede arne_v Ekspert
14. juni 2005 - 14:52 #3
hvordan "kigger" du ?

'?' plejer at være et korrekt ISO-8859-1 som bliver vist som UTF-8
Avatar billede aslan Nybegynder
14. juni 2005 - 14:58 #4
Jeg bruger navicat som er en klient til mysql. Hvad der er endnu mere mærkeligt er at når jeg kører samme kode lokalt har jeg ikke problemer med encoding, det er først når jeg smider det op. Jeg kører windows lokalt og debian på server.
Avatar billede arne_v Ekspert
14. juni 2005 - 15:01 #5
linux er typisk længere fremme med UTF-8 end windows
Avatar billede arne_v Ekspert
14. juni 2005 - 15:02 #6
jeg kan se 2 veje:

1) gem som UTF-8 på dins erver

2) fortæl MySQL at den database/tabel/felt er i ISO-8859-1
Avatar billede aslan Nybegynder
14. juni 2005 - 15:34 #7
2) fortæl MySQL at den database/tabel/felt er i ISO-8859-1

hmm hvordan gør jeg det?
Avatar billede arne_v Ekspert
14. juni 2005 - 15:41 #8
Avatar billede aslan Nybegynder
15. juni 2005 - 15:45 #9
Hej arne fik det løst ved at ændre den globale encoding i debian...
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