Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    4

    ordinamento tabella con lettere accentate

    Ciao a tutti. Ho un problema che non riesco a risolvere.

    Ho una tabella con due campi (nome e cognome) e i cognomi spesso contengono caratteri spagnoli. Quando faccio una query l'ordinamento non è corretto (es àlvarez appare dopo azurin)

    Sul mio server, uso il charset latin1 con collation latin1_spanish_ci per il db, la codifica iso-8859-1 nell'header dei file php, e funziona tutto correttamente (visualizzazione e ordinamento).

    Ho messo tutto sul sever libero e sono iniziati i problemi.
    Per visualizzare correttamente gli accenti ho dovuto togliere l'header dai file php.
    A parte questo, la visualizzazione dei caratteri accentati è ok e quando faccio una ricerca per cognome che inizia per "a" mi trova tutti, sia quelli che iniziano con "a" che con "à". Ne deduco che non fa differenza fra i caratteri, però quelli che iniziano per "à" stanno tutti alla fine.
    Ho provato a impostare la connessione a mysql con utf8 ma niente.

    Qualcuno può dirmi dove sbaglio e suggerirmi una soluzione? Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: ordinamento tabella con lettere accentate

    Originariamente inviato da ditch
    Ciao a tutti. Ho un problema che non riesco a risolvere.

    Ho una tabella con due campi (nome e cognome) e i cognomi spesso contengono caratteri spagnoli. Quando faccio una query l'ordinamento non è corretto (es àlvarez appare dopo azurin)

    Sul mio server, uso il charset latin1 con collation latin1_spanish_ci per il db, la codifica iso-8859-1 nell'header dei file php, e funziona tutto correttamente (visualizzazione e ordinamento).

    Ho messo tutto sul sever libero e sono iniziati i problemi.
    Per visualizzare correttamente gli accenti ho dovuto togliere l'header dai file php.
    A parte questo, la visualizzazione dei caratteri accentati è ok e quando faccio una ricerca per cognome che inizia per "a" mi trova tutti, sia quelli che iniziano con "a" che con "à". Ne deduco che non fa differenza fra i caratteri, però quelli che iniziano per "à" stanno tutti alla fine.
    Ho provato a impostare la connessione a mysql con utf8 ma niente.

    Qualcuno può dirmi dove sbaglio e suggerirmi una soluzione? Grazie in anticipo
    Partiamo dalla fine. L'ordinamento è corretto! la à viene dopo la a. Se vuoi forzare l'ordinamento allora ordina il campo sotto una funzione di replace dei caratteri accentati.

    Ad esempio order by replace(campo, 'à', 'a') idem x gli altri caratteri

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    4

    Re: ordinamento tabella con lettere accentate

    Originariamente inviato da ditch
    Ciao a tutti. Ho un problema che non riesco a risolvere.

    Ho una tabella con due campi (nome e cognome) e i cognomi spesso contengono caratteri spagnoli. Quando faccio una query l'ordinamento non è corretto (es àlvarez appare dopo azurin)

    Sul mio server, uso il charset latin1 con collation latin1_spanish_ci per il db, la codifica iso-8859-1 nell'header dei file php, e funziona tutto correttamente (visualizzazione e ordinamento).

    Ho messo tutto sul sever libero e sono iniziati i problemi.
    Per visualizzare correttamente gli accenti ho dovuto togliere l'header dai file php.
    A parte questo, la visualizzazione dei caratteri accentati è ok e quando faccio una ricerca per cognome che inizia per "a" mi trova tutti, sia quelli che iniziano con "a" che con "à". Ne deduco che non fa differenza fra i caratteri, però quelli che iniziano per "à" stanno tutti alla fine.
    Ho provato a impostare la connessione a mysql con utf8 ma niente.

    Qualcuno può dirmi dove sbaglio e suggerirmi una soluzione? Grazie in anticipo

    Per prima cosa, grazie Joe della risposta.
    La terrò sicuramente in considerazione.

    In verità però posso dirti che preferirei una soluzione radicale, magari con le collation, per due motivi:
    1) i caratteri da sostituire sono molti, a volte neanche so cosa inseriscono gli utenti
    2) è vero che sulla tabella ascii la "a" viene prima della "à", però so che è possibile settare e modificare questa impostazione, in modo che "à" sia considerata come "a". Ad esempio, sul mio server personale àlvarez sta prima di azurin, specificando order by cognome e usando la collation latin1_spanish_ci di mysql.

    Grazie e buona giornata

  4. #4
    non dici come e' settato il collate nella tabella del server online. Quasi viene da pensare che hai una versione di mysql alquanto obsoleta e che non gestisce ancora il collate.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    4

    Re: Re: ordinamento tabella con lettere accentate

    Ciao Piero,
    è la stessa conclusione a cui pensavo pure io, però se il server mysql online non supporta le collation non capisco perchè cercando i cognomi che iniziano per "a" mi trova anche quelli che iniziano per "à".

    Purtroppo il server online non è sotto il mio controllo ma è stato scelto dai committenti e quindi ho le mani legate... ho provato a replicare esattamente i parametri del mio server (collation latin1_spanish_ci) e ho anche provato a portare tutto in utf8 come molti suggeriscono ma niente.

    Buona giornata

  6. #6

    Re: Re: Re: ordinamento tabella con lettere accentate

    Originariamente inviato da ditch
    Ciao Piero,
    è la stessa conclusione a cui pensavo pure io, però se il server mysql online non supporta le collation non capisco perchè cercando i cognomi che iniziano per "a" mi trova anche quelli che iniziano per "à".

    Purtroppo il server online non è sotto il mio controllo ma è stato scelto dai committenti e quindi ho le mani legate... ho provato a replicare esattamente i parametri del mio server (collation latin1_spanish_ci) e ho anche provato a portare tutto in utf8 come molti suggeriscono ma niente.

    Buona giornata
    controlla la versione di mysql, dei character set e collation. dovresti vedere il problema.

    select version();
    show variables;

    la collation e' solo l'ordinamento dell'alfabeto secondo un dato charset. Quindi deve essere coerente collation e charset. Questo ordinamento si trova scritto in un file .xml. Potresti pure fartene uno personale.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.