Toon posts:

[Java]Characters in username vertalen naar juiste characters

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben na een tijdje zoeken er achter gekomen waardoor sommige useraccounts welke gemaakt worden door een webinterface niet worden geaccepteerd door het uiteindelijke ERP systeem waar ze naar toe worden gestuurd.

Deze usernames bevatten bijvoorbeeld een Duitse umlaut of bijvoorbeeld een O of E met een quote er op. Op de een of andere manier moet de webinterface (Java/JSP) een check uitvoeren of dergelijke caracters in de username gebruikt zijn. Is er binnen java een manier om dit automatisch te doen of moeten we handmatig iets gaan bouwen.

Als er handmatig iets gemaakt moet worden kan iemand dan een pointer geven in welke richting dit zou moeten gebeuren. Het liefst natuurlijk een standaard java methode maar als deze niet voorhanden is dan maar handmatig.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Verwijderd schreef op donderdag 21 juli 2005 @ 09:26:
Ik ben na een tijdje zoeken er achter gekomen waardoor sommige useraccounts welke gemaakt worden door een webinterface niet worden geaccepteerd door het uiteindelijke ERP systeem waar ze naar toe worden gestuurd.
Wat is de formele definitie (BNF?) van wat er wel geaccepteerd wordt?

  • Equator
  • Registratie: April 2001
  • Laatst online: 17:08

Equator

Crew Council

#whisky #barista

Ik denk dat je dat het makkelijkste kan doen met regex.

[search=java regex replace] ;)

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
De reden is dat je niet weet welke character set het ERP systeem gebruikt, en welke character set je frontend. Gokje: de Front end is Unicode 3.0 (Java). Je vertaalt dat naar ASCII (7 bits) en er is geen 7 bits karakter met umlauts etc. Bij die vertaling raakt je informatie kwijt en je ERP kan die niet terugzetten.

De oplossing is dus opvragen welke charset je ERP gebruikt, daar direct naar toe vertalen (transcoding) en als dat mislukt heb je dus een invalide naam.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
dank voor de hint in de deze richting ik ben nu aan het zoeken naar wat regex zaken....


Ik heb op de Sun website wat zaken gevonden en de code hieronder staat een voorbeeld waarin een woord in een string vervangen wordt door een ander woord. Namelijk het woord "cat" in het woord "dog". Dit gaat echter over een woord. Ik heb een redelijke lijst met tekens welke veranderd moeten worden in andere tekens.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * This code writes "One dog, two dogs in the yard."
 * to the standard-output stream:
 */
import java.util.regex.*;

public class Replacement {
    public static void main(String[] args) 
                         throws Exception {
        // Create a pattern to match cat
        Pattern p = Pattern.compile("cat");
        // Create a matcher with an input string
        Matcher m = p.matcher("one cat," +
                       " two cats in the yard");
        StringBuffer sb = new StringBuffer();
        boolean result = m.find();
        // Loop through and create a new String 
        // with the replacements
        while(result) {
            m.appendReplacement(sb, "dog");
            result = m.find();
        }
        // Add the last segment of input to 
        // the new String
        m.appendTail(sb);
        System.out.println(sb.toString());
    }
}

Kan ik naar meerdere zaken tegelijk zoeken en deze in verschillende zaken veranderen? de A met een quote in een A, een E met een quote veranderen in een standaard E etc etc.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Regel eerst een definitie van wat het ERP systeem wel en niet kan. Je probleem zit bin charsets en dat is even iets anders dan een simpele replace uitvoeren.

  • Equator
  • Registratie: April 2001
  • Laatst online: 17:08

Equator

Crew Council

#whisky #barista

MSalters schreef op donderdag 21 juli 2005 @ 10:01:

De oplossing is dus opvragen welke charset je ERP gebruikt, daar direct naar toe vertalen (transcoding) en als dat mislukt heb je dus een invalide naam.
Dat is inderdaad handiger. Met regex de boel gewoon omzetten in iets anders is niet zo netjes natuurlijk :+

Dus wanneer username "ôôber" niet vertaald kan worden naar de charset van het ERP systeem, dan dient er gewoon een andere naam ingevoerd te worden.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Precies. Want als je mer regex daar "oober" van maakt, dan krijg je toch gekke situaties. Weet de user dat die dakjes weg zijn? Wat doe je als er al een user "oober" is? Is dat dezelfde? Geef je de foutmelding dat username "ôôber" al bestaat? (die bestaat niet) of dat username "oober" al bestaat (wat heeft dat met "ôôber" te maken?)

Sowieso moet je in het Duits een umlaut vervangen door een extra e, dus ü wordt ue. Misschien is wel het meest handige om de input method zo te maken dat je geen invalide karakters kunt invoeren. Als je geen ü kunt typen (dwz, de key wordt genegeerd en niet getoond) bestaat het hele issue niet. Blijft staan dat je dan moet weten wat de charset is van de ERP, dan weet je namelijk wat legaal is.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1