Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    charset e nomi campi mysql

    ciao,

    vorrei capire una cosa se possibile.

    ho il campo di una tabella mysql che si chiama 'città'

    $query = "select * from tabella WHERE id = 1234";
    $result = mysql_query($query);
    $row = mysql_fetch_assoc($result);

    quando stampo $row['città'];

    mi da Undefined index: Città


    mentre se faccio la query solo su Città
    query = "select 'città' from tabella WHERE id = 1234";

    mi da Invalid utf8 character string: 'Citt\xE0'

    tutte le tabelle e i campi sono codificati latin1_swedish_ci e il charset della pagina è iso-8859-1. ho provato anche a modificarla in UTF-8, ma non cambia

    pensavo che il collation del DB servisse solo per quello che inserisco nei campi delle tabelle e non per i nomi dei campi.

    insomma dov'è l'inghippo?

    grazie

  2. #2
    L'inghippo e' che non si devono usare lettere accentate nei nomi dei campi.

    L'altro e' che: select 'città' tra apici seleziona una stringa e non il campo. caso mai dovresti usare il backtik con 096 `città`

    la codifica ascii utf8 e' multibyte mentre il latin1 codifica sempre e solo su due byte. Quindi se da un lato (client) invii con il charset utf8 metti caso con 3 byte e dall'altro lato (server) ricevi con un latin1 che capisce solo due byte ecco spiegato il mistero e il perche' della mia affermazione nella prima riga.

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

  3. #3
    Originariamente inviato da piero.mac
    L'inghippo e' che non si devono usare lettere accentate nei nomi dei campi.
    ehh lo so ma il fatto è che questo è una conversione mysql di un DB access e quindi devo utilizzare i nomi dei campi così come li ho trovati. poi devo anche sincronizzarlo, motivo in più per non poter cambiare quel nome

    L'altro e' che: select 'città' tra apici seleziona una stringa e non il campo. caso mai dovresti usare il backtik con 096 `città`
    si infatti lo sto gia' usando, solo che qui l'ho riportato tra apici

    la codifica ascii utf8 e' multibyte mentre il latin1 codifica sempre e solo su due byte. Quindi se da un lato (client) invii con il charset utf8 metti caso con 3 byte e dall'altro lato (server) ricevi con un latin1 che capisce solo due byte ecco spiegato il mistero e il perche' della mia affermazione nella prima riga.
    cosa vuol dire ...quindi se da un lato (client) invii con il charset utf8....

    quindi, l'unico modo per poter ottenere un risultato è quello di modificare il nome del campo e metterlo senza accento?

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.