Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100

    [mysql] codifica delle tabelle, lettere accentate e campi blob

    finora impostavo sempre le tabelle dei miei database con codifica latin1
    adesso però mi sono accorto che facendo un LIKE su un campo blob codificato ottengo gli stessi risultati sia con le lettere accentate che con le lettere non accentate

    ad esempio se un record contiene "fèfè", mi viene restituito sia se cerco "%e%", sia se cerco "%è%"

    mi è stato consigliato di cambiare la codifca, l'ho fatto in una tabella di prova impostandola come utf8 ma non è cambiato niente

    potete illuminarmi?

  2. #2
    ti è stato detto di vedere se la codifica dava gli stessi risultati

    comunque, mi intrometto dall'altro 3D.

    Tu hai detto che usi encrypt per utente e password.

    Mi domando se l'encrypt che usi sia compatibile con questi caratteri.

    L'utilizzo di LIKE in questo caso dovrebbe essere sbagliato, sia per i problemi che ti ho già detto, sia perchè probabilmente LIKE "normalizza" ti caratteri accentati (dati i risultati).

    Se tu hai dati cryptati nel campo, visto che hai usato blob, anche se non credo sia indispensabile, non devi usare LIKE ma usare una condizione tipo WHERE ENCRYPT(dato_nome) = CAMPO_NOME_CRYPTATO

    e non

    WHERE CAMPO_NOME_CRYPTATO LIKE "%dano_nome%"

    tanto più che è per una operazione di login.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100
    no nel login è un problema perchè non ho trovato altri modi per rendere case insensitive la ricerca del nome utente, la password invece è case sensitive

    però nell'applicazione che sto sviluppando è necessario usare un like, perchè per selezionare velocemente un utente (sono più di mille i pargoli) uso un sitema ajax + asp

    praticamente in un campo input text scrivo uno o più caratteri, ed automaticamente fa la richiesta trsparente e visualizza subito sotto il campo input l'elenco dei nomi che soddisfano il like, clicco su uno dei nomi visualizzati e si inserisce automaticamente nel campo input

    è moto utile come sistema, complicato un po dal fatto che alcuni caratteri vengono filtrati per evitare problemi con i piratozzi, comunque non riesco a fargli distinguere le lettere accentate da quelle non

    per il Like uso
    CONVERT(AES_DECRYPT(nome campo, 'chiave') USING latin1) LIKE '%"testo da ricercare%'
    ho capito che è l'impostazione latin1 ad influenzare la ricerca in questo modo, quindi c'è un'impostazione o una preghiera che riesca a forzare un like "meno qualunquista"?

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.