Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Tipo di codifica db mysql sito in russo e motore di ricerca

    Ho un db in russo, dove i campi contengono i vari testi che pero' sono salvati cosi':

    Codice PHP:
    своего 
    Come posso effettuare una ricerca nel database utilizzando parole in russo e mantenendo l'attuale struttura del db ?
    Attualmente, se provo a fare una ricerca con una parola in cirillico (presente nel db) non mi trova nulla perche' "penso" che la ricerca viene eseguita su un campo che contiene la stessa parola ma "codificata"...E' corretto come ragionamento ?

    E come potrei risolvere ?
    Pensavo di utilizzare iconv e passare la parola che inserisco in cirillico dal modulo trasformata:

    Codice PHP:

    $trasformaPerRicerca 
    iconv("UTF-8""UTF-8"$_POST['valoreDaCercare']); 
    Pero' non riesco a capire che tipo di codifica utilizzare come secondo parametro dell iconv.

    Suggerimenti ?
    Grazie 1000
    Ciao

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    a quanto pare attualmente i dati nel tuo db vengono salvati usando la funzione htmlspecialchars, infatti usando la funzione di decodifica htmlspecialchars_decode si ottiene la stringa 'своего', che secondo google translate vuol dire 'un'.

    Per risolvere ti consiglio di seguire questa guida, magari creati un nuovo db con le nuove impostazioni sul charset, dopodichè importa i dati dal tuo db attuale, dovresti essere a posto.

    Fammi sapere.

    Ciao

  3. #3
    Ciao e grazie !!

    in effetti, quando salvo i dati nel db li paso prima con:

    Codice PHP:
    mysql_escape_string($_POST['testoRu']); 
    Forse potrebbe essere per quello ?

    Il db e' di tipo MyISAM, con collation utf8_bin.

    Ma se convertissi il valore di ricerca nello stessa entita' su cui sono salvate e poi effettuassi la query con quel valore ?

    Che ne pensi ?



  4. #4
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    mysql_escape_string != htmlspecialchars

    Il charset che stai usando va benissimo come l'altro utente ti ha fatto notare devi riconvertire l'output in uscita con l'apposita funzione.

  5. #5
    Provato a cambiare il mysql_escape_string con htmlspecialchars nel form di inserimento ma non cambia nulla, con phpmyadmin vedo i caratteri sempre come prima, a parte che ha cambiato il ; con & ma questo e' normale.





    Ma per passare da utf-8 a quell'entita' li come posso fare ??



    Cmq grazie, siete molto gentili !!

  6. #6
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    no non hai capito, il motivo per cui i caratteri sono salvati in quel modo nel DB è perché probabilmente da qualche parte la htmlspecialchars viene già eseguita, quindi è normale che i dati siano salvati così.

    La domanda giusta è, ma a video poi, i dati si vedono correttamente? Intendo quando li recuperi dal database nel tuo codice.

  7. #7
    Si, si vedono perfettamente !

    Il mio problema e' che volendo realizzare un motore di riceca interno (in full text), essendo i caratteri salvati nel formato "numerico" non posso effettuare una ricerca, perche' se cerco una parola in russo (inserita in maniera testuale) non mi trova nessuna rilevanza (ovviamente), spero di essermi spiegato bene.

    E' per quello che chiedo come posso fare per tornare da utf-8 (da come viene passato dal db e visualizzato correttamente in una pagina con corretta codifica utf-8) a formato in cui viene poi effettivamente salvato sul db).

    Sto impazzendo....La prossima volta che mi chiedono un sito in russo con motore di ricerca...Ci penso su 1000 volte.....

  8. #8
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Sei sicuro al 100% che non c'è una htmlspecialchars da qualche parte?

  9. #9
    No, ne nel form di inserimento ne nella pagina dove recupero i dati.

  10. #10
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858


    In tal caso mi aspetterei al limite che i dati fossero salvati in hex piuttosto che in forma di entities... devo ragionarci su.

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.