Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[Java] Problemen met ASCII-encodering (00-waarde) CORRECTIE

abraracourcix
3 antwoorden
  • Hallo,

    Volgende code-snippets om mijn probleem te schetsen:

    //creatie tekst.txt
    FileOutputStream fos = new FileOutputStream("c:\\tekst.txt");
    Writer out = new BufferedWriter(new OutputStreamWriter(fos));

    // testregels naar bestand schrijven
    String strTemp = "LIJN1: test lijn 1";
    out.write(strTemp);
    out.writeln;

    strTemp = "LIJN2: test lijn 2 ";
    out.write(strTemp);
    out.writeln;

    // gedeelte met stringbuffer -> problemen
    StringBuffer tmp1 = new StringBuffer();
    tmp1 = new StringBuffer("LIJN3: test lijn 3");
    tmp1.setLength(50);
    strTemp = tmp1.toString();
    out.write(strTemp);
    out.newLine();

    out.close



    PROBLEEM:
    Eerst dacht ik dat het iets met de DB te maken maar dat was verkeerd.

    Bij de uitvoer van deze file zie ik dat er 00-waarden voorkomen. (UltraEdit, notepad laat dit toe, dus je merkt het niet maar het is geen pure ascii)
    Zonder gebruik van een StringBuffer heb ik dat probleem niet.
    Ik gebruik de stringbuffer omdat de lengte van mijn woorden in m'n tekstbestand een vaste waarde moeten hebben.

    Weet iemand hoe ik dit kan oplossen?

    (De woorden komen uit de database, en de file moet een EDI bestand worden.)
  • Ik denk dat hij zo beter werkt:

    [code:1:27c4432fde]while (rs.next())
    {
    if (rs.getString("employee_name") != null)
    {
    tmp1 = new StringBuffer(rs.getString("employee_name"));
    tmp1.setLength(35);
    strTemp = tmp1.toString();
    out2.write(strTemp);
    }
    }[/code:1:27c4432fde]

    Op de manier waarop jij het doet, stopt ie een lege stringbuffer in de output als rs.getString("employee_name") null is.
  • Ja, daar zit de fout niet.

    Ik heb m'n probleemstelling gewijzigd omdat ik al iets verder ben.

    Het gaat om het feit dat ik een vaste lengte geef aan m'n StringBuffer.
    Dit vult hij op met nullwaarden (00-waarden).

    Ik gebruik een StringBuffer omdat ik wil dat m'n Strings bij output nr een bestand, een bepaalde lengte hebben.

    (Dit is nodig voor EDI gegevens)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.