Avatar billede kenneth_vindum Nybegynder
08. juli 2003 - 09:22 Der er 8 kommentarer og
1 løsning

Kan man ændre kakaktersættet som Access benytter sig af?

Jeg håber at der er en der kan hjælpe mig med følgende:

Jeg programmerer i Java til en Access database, hvor jeg vil gemme teksten ’æøå’ som en tekst. Maskinen det udføres på bruger et græsk karaktersæt (nærmere betegnet Cp1253) som standard. Problemet er, at teksten nu gemmes i Access som ’?oa’ i stedet for ’æøå’. Det samme gør sig gældende hvis man forsøger at hente ’æøå’ fra en databasen på maskinen med det græske karaktersæt.

Kan man ændre kakaktersættet som Access benytter sig af (igennem javakoden)? Den tager jo åbenbart det standard karaktersæt som maskinen bruger, men det er ikke så praktisk i dette tilfælde...

På forhånd tak.
/Kenneth
Avatar billede hossein Nybegynder
08. juli 2003 - 09:44 #1
du skal lave en funktion hvor du sætter ascii koden/værdier for den bogstaver. hvis det er i windows miljø. Du finder i access "under Help" disse værdier.
Avatar billede kenneth_vindum Nybegynder
08. juli 2003 - 10:20 #2
Det er bare lidt svært i det scenarie hvor jeg skal hente data, som allerede findes som 'æøå' i databasen (før maskinen blev græsk). Jeg kan jo ikke lave om på det når jeg ikke kan hente det ud og samtidigt være sikker på hvad det er jeg henter. Kan du følge min tankegang?
Avatar billede arne_v Ekspert
08. juli 2003 - 12:05 #3
Det er der en Java løsning på. Se følgende skitserede løsning:

stmt.executeQuery("SELECT ...");
while(rs.next()) {
    //String s = rs.getString(1);
    byte[] b = rs.getBytes(1);
    String s = new String(b, "ISO-8859-1");
}
Avatar billede kenneth_vindum Nybegynder
09. juli 2003 - 11:56 #4
Hej Arne. Tak for dit svar.
Jeg har prøvet din løsning, men den virker ikke..

I databasen står der i en cell et ’Ø’. Når jeg henter den v.hj.a. koden:
byte[] b = resultSet.getBytes(1);
System.out.println(b[0]);

Bliver der udskrevet byteværdien 79 (O) i stedet for -40 (Ø)
Altså går databasekaldet galt, og ikke javakoden med konverteringen som du foreslår.
String s = new String(b, "ISO-8859-1");

Er det mon MS-Access som har et problem med karaktersættet på maskiner med en anden encoding?

Andre gode ideer?

/Kenneth
Avatar billede arne_v Ekspert
09. juli 2003 - 12:15 #5
Hm.

Tilbage til tænke-boksen.
Avatar billede fynbohans Nybegynder
09. juli 2003 - 20:04 #6
Kan du ikke bare finde værdierne for de 6 danske tegn på den græske maskine og konvertere dem til ANSI. Følgede bruger jeg selv ved
konvertering til og fra ANSI(Windows = 1) og ASCII(DOS = 2):
DIM DK(1:6,1:2)
    DK(1,1) = 230
    DK(2,1) = 198
    DK(3,1) = 248
    DK(4,1) = 216
    DK(5,1) = 229
    DK(6,1) = 297
    DK(1,2) = 145
    DK(2,2) = 146
    DK(3,2) = 155
    DK(4,2) = 157
    DK(5,2) = 134
    DK(6,2) = 143
for "æÆøØåÅ".
Avatar billede kenneth_vindum Nybegynder
11. juli 2003 - 11:05 #7
Nej det kan ikke lade sig gøre. For teksterne jeg får retur fra databasen er egentligt danske. Derved bliver ordet "RØD" til "ROD" når databasen retunerer det til mig. Men nu kan jeg jo ikke vide om ordet rent faktisk VAR "ROD", eller om det skal konverteres til "RØD" i stedet. Meget bøvlet ;o)
Avatar billede fynbohans Nybegynder
11. juli 2003 - 11:35 #8
Og så bliver æble vel til ?ble. Hvordan ser Æ f.eks. ud.
Har du prøvet at skrive hele tegnsættet fra 32 til 254 ud på den
græske maskine?
Avatar billede kenneth_vindum Nybegynder
18. august 2010 - 11:48 #9
Jeg lukker tråden
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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