Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Carattere Ã

  1. #1

    Carattere Ã

    Ciao Ragazzi

    io ho una colonna con campo "UTF8-UNICODE-CI"
    la pagina che modifica il campo è in "utf-8"
    e ho anche modificato tramite php con questo
    codice:
    Content-type: text/html;charset=utf-8
    ma se scrivo in questa pagina di amministrazione "à" esso me lo salva à nel Database
    ma se lo Estraggo lo legge "à"

    Perche non me lo salva bene?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    181
    Usa questa fantasmagorica funzione:
    Codice PHP:
    function normalize_str($str){
        
    $invalid = array(
            
    'Š'=>'S',             'š'=>'s',             'Ð'=>'Ð',         'Ž'=>'Z',             'ž'=>'z',            'À'=>'À',    'Á'=>'Á',    'Â'=>'Â',
            
    'Ä'=>'Ä',         'Å'=>'Å',     'Æ'=>'Æ',     'Ç'=>'Ç',     'È'=>'È',     'É'=>'É',     'Ê'=>'Ê ',     'Ë'=>'Ë',
            
    'Ì'=>'Ì',     'Í'=>'Í',     'Î'=>'Î',     'Ï'=>'Ï',         'Ñ'=>'Ñ',    'Ò'=>'Ò',     'Ó'=>'Ó',     'Ô'=>'Ô',
            
    'Õ'=>'Õ',     'Ö'=>'Ö',         'Ø'=>'Ø',     'Ù'=>'Ù',     'Ú'=>'Ú',     'Û'=>'Û',     'Ü'=>'Ü',         'Ý'=>'Ý',
            
    'Þ'=>'Þ',     'ß'=>'ß',        'à'=>' à',     'á'=>'á',     'â'=>'â',     'ã'=>'ã',     'ä'=>'ä',         'å'=>'å',
            
    'æ'=>'æ',     'ç'=>'ç',     'è'=>'è',     'é'=>'é',     'ê'=>'ê ',      'ë'=>'ë',         'ì'=>'ì',     'í'=>'í',
            
    'î'=>'î',     'ï'=>'ï',         'ð'=>'ð',         'ñ'=>'ñ',     'ò'=>'ò',     'ó'=>'ó',     'ô'=>'ô',     'õ'=>'õ',
            
    'ö'=>'ö',         'ø'=>'ø',     'ù'=>'ù',     'ú'=>'ú',     'û'=>'û',        'ü'=>'ü',         'ý'=>'ý',    'þ'=>'þ',
            
    '"'=>'&quot;',        '“'=>'&quot;',        '”'=>'&quot;',        '‘'=>'&apos;',        '’'=>'&apos;',        "'"=>'&apos;',        '<'=>'&lt;',        '>'=>'&gt;',
            
    'Ã'=>'&Atilde;',    '*'=>'*'
            
    );              
            
    $str str_replace(array_keys($invalid), array_values($invalid), $str);
            return 
    $str;
        } 

  3. #3
    Originariamente inviato da Dheed
    Usa questa fantasmagorica funzione:
    Codice PHP:
    function normalize_str($str){
        
    $invalid = array(
            
    'Š'=>'S',             'š'=>'s',             'Ð'=>'&ETH;',         'Ž'=>'Z',             'ž'=>'z',            'À'=>'&Agrave;',    'Á'=>'&Aacute;',    'Â'=>'&Acirc;',
            
    'Ä'=>'&Auml;',         'Å'=>'&Aring;',     'Æ'=>'&AElig;',     'Ç'=>'&Ccedil;',     'È'=>'&Egrave;',     'É'=>'&Eacute;',     'Ê'=>'&Ecirc; ',     'Ë'=>'&Euml;',
            
    'Ì'=>'&Igrave;',     'Í'=>'&Iacute;',     'Î'=>'&Icirc;',     'Ï'=>'&Iuml;',         'Ñ'=>'&Ntilde;',    'Ò'=>'&Ograve;',     'Ó'=>'&Oacute;',     'Ô'=>'&Ocirc;',
            
    'Õ'=>'&Otilde;',     'Ö'=>'&Ouml;',         'Ø'=>'&Oslash;',     'Ù'=>'&Ugrave;',     'Ú'=>'&Uacute;',     'Û'=>'&Ucirc;',     'Ü'=>'&Uuml;',         'Ý'=>'&Yacute;',
            
    'Þ'=>'&THORN;',     'ß'=>'&szlig;',        'à'=>' &agrave;',     'á'=>'&aacute;',     'â'=>'&acirc;',     'ã'=>'&atilde;',     'ä'=>'&auml;',         'å'=>'&aring;',
            
    'æ'=>'&aelig;',     'ç'=>'&ccedil;',     'è'=>'&egrave;',     'é'=>'&eacute;',     'ê'=>'&ecirc; ',      'ë'=>'&euml;',         'ì'=>'&igrave;',     'í'=>'&iacute;',
            
    'î'=>'&icirc;',     'ï'=>'&iuml;',         'ð'=>'&eth;',         'ñ'=>'&ntilde;',     'ò'=>'&ograve;',     'ó'=>'&oacute;',     'ô'=>'&ocirc;',     'õ'=>'&otilde;',
            
    'ö'=>'&ouml;',         'ø'=>'&oslash;',     'ù'=>'&ugrave;',     'ú'=>'&uacute;',     'û'=>'&ucirc;',        'ü'=>'&uuml;',         'ý'=>'&yacute;',    'þ'=>'&thorn;',
            
    '"'=>'&quot;',        '“'=>'&quot;',        '”'=>'&quot;',        '‘'=>'&apos;',        '’'=>'&apos;',        "'"=>'&apos;',        '<'=>'&lt;',        '>'=>'&gt;',
            
    'Ã'=>'&Atilde;',    '*'=>'*'
            
    );              
            
    $str str_replace(array_keys($invalid), array_values($invalid), $str);
            return 
    $str;
        } 

    Non MI SERVE convertire, ma capire

    perchè viene memorizzato "Ã" ? ma letto "à" ?
    forse perche uso PHP MY ADMIN che nn ha una codifica UTF 8 come lettura?

  4. #4
    Perché devi encodare in utf8 con utf8_encode() e salvare nel db e poi decodare con utf8_decode() quando estrai e stampi.
    Inoltre ti conviene settare il db con codifica utf8, considerando che normalmente non è settato così.

  5. #5
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Usa questa fantasmagorica funzione:
    Non ha nessuna utilità! Non risolvi nessun problema così: semplicemente lo nascondi sotto il tappeto.
    Perché devi encodare in utf8 con utf8_encode() e salvare nel db e poi decodare con utf8_decode() quando estrai e stampi.
    Questo può valere SOLO nel caso in cui la tua pagina è codificata in ISO-8859-1 mentre il database lavora in utf-8. Non mi sembra questo il caso.


    Perche non me lo salva bene?
    L'ultima cosa che ha detto fdisotto è molto probabilmente corretta: non hai impostato correttamente il charset della connessione. Per cui quei caratteri strani che leggi su phpmyadmin sono i valori reali che vengono salvati. Paradossalmente nella tua pagina ti sembra di salvarli e leggerli correttamente perchè fai entrambe le cose sbagliate! Ti interessa sapere cosa succede internamente? Leggi 'What happens if you don't SET NAMES utf8' di questo articolo molto interessante: http://kunststube.net/frontback/

  6. #6
    Originariamente inviato da .Kurt
    Non ha nessuna utilità! Non risolvi nessun problema così: semplicemente lo nascondi sotto il tappeto.

    Questo può valere SOLO nel caso in cui la tua pagina è codificata in ISO-8859-1 mentre il database lavora in utf-8. Non mi sembra questo il caso.



    L'ultima cosa che ha detto fdisotto è molto probabilmente corretta: non hai impostato correttamente il charset della connessione. Per cui quei caratteri strani che leggi su phpmyadmin sono i valori reali che vengono salvati. Paradossalmente nella tua pagina ti sembra di salvarli e leggerli correttamente perchè fai entrambe le cose sbagliate! Ti interessa sapere cosa succede internamente? Leggi 'What happens if you don't SET NAMES utf8' di questo articolo molto interessante: http://kunststube.net/frontback/
    Quindi correggimi se sbaglio

    Io Leggo e scrivo nella pagina PHP con Crittografia UTF-8 ma non specificando nella query la crittografia esso nn viene salvato UTF-8 , a io lo leggo bene perche faccio una conversione nella pagina in UTF-8

    e quindi adesso impostando il CHarset nella conessione :
    codice:
    $db_charset = mysql_query( "SHOW VARIABLES LIKE 'character_set_database'" ); $charset_row = mysql_fetch_assoc( $db_charset ); mysql_query( "SET NAMES '" . $charset_row['Value'] . "'" ); unset( $db_charset, $charset_row );
    ... risolvo
    E FU COSI grazie mille

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.