Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Caratteri accentati

  1. #1

    Caratteri accentati

    Ciao a tutti!
    Ho un problema con i caratteri accentati in PHP...innanzitutto vi dico che uso MySQL ma fin li niente problemi, ho creato un db con codifica utf8. Se leggo un campo dal db lo leggo correttamente e se lo visualizzo su una pagina PHP si visualizza correttamente. Il problema avviene quando cerco di fare delle modifiche alla stringa letta, cioè:
    io scrivo nel database la parola "è", se leggo questo campo e lo visualizzo in una pagina PHP tutto ok, ma se faccio un "if" valore letto ='è' mi da false...
    dove sbaglio??

    Ringrazio chi volesse aiutarmi.

  2. #2
    prova con i caratteri ascii (x es ASCII 191)

  3. #3

    Re: Caratteri accentati

    Originariamente inviato da ligamarco
    ma se faccio un "if" valore letto ='è' mi da false...
    dove sbaglio??
    Devi salvare anche il sorgente PHP codificato come UTF-8.
    Quasi tutti gli editor ti permettono di farlo.

    Occhio che gran parte delle funzioni sulle stringhe del PHP non funzionano su stringhe multibyte (magari lo sapevi già )

  4. #4
    Ho provato ma niente da fare, non lo riconosce
    tra l'altro ho notato una cosa "strana", ho fatto ord('è');
    e da 232, ma il valore ascii di 'è' non dovrebbe essere 138???

    Grazie dell'aiuto...altri suggerimenti sono bene accetti...

  5. #5
    non avevo ancora letto la risposta di skidx...
    bene, ma come si fa a salvare in utf8?? (io uso dreamweaver), devo aggiungere una riga di codice o cosa???

    Grazie 1000 dell'aiuto.

  6. #6
    no, niente nel codice, è una impostazione dell'editor.
    Nel DW non so, io uso il Notepad ++, comunque penso ci sia anche lì, dai uno sguardo all'help.

  7. #7
    Per tagliare la testa al toro ho aperto il file con Notepad ed ho salvato in UTF-8 (con DW non trovo nessuna impostazione) comunque ho visto che se ora continuo a salvare con DW rimane sempre codificato in UTF-8 :rollo:
    però il problema rimane!
    Ma succede una cosa strana: prima ord('è') era 232 ora è diventato 195...ci siamo avvicinati!
    Siamo ancora lontani però dal 138....
    Come te lo spieghi??

  8. #8
    Sdrammatizziamo:

    Me lo spiego con il fatto che sono le 23 e mezza!

  9. #9
    la funzione ord() non serve a una cippa per i caratteri multibyte, come ti dicevo prima.

    Tuttavia il confronto diretto tra stringhe fatto con l'== dovrebbe fungere, mi sembra strano non ti funzioni.
    E' possibile che tu stia confrontando dati utf-8 con dati non utf-8.

  10. #10
    capisco...
    ma il db usa il charset utf8, ed i caratteri vengono giustamente letti e scritti a video...
    Se $testo è una variabile ottenuta leggendo da database e contiene 'è' se la stampo a video visualizza 'è' e se faccio if ($testo=='è') mi da false. Se invece faccio direttamente dal file $testo='è'; if ($testo=='è') mi da TRUE.
    Esiste un "trucchetto" per vedere cosa c'è realmente nella variabile $testo ottenuta leggendo il db??

    Grazie infinite per l'aiuto...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.