Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Accenti ed immagini

  1. #1

    Accenti ed immagini

    Ho una pagina codificata in UTF-8 che deve mostrare un'immagine che una lettera accentata nel nome che ha solo lettere minuscole, numeri e trattini.
    Io immetto il codice html in questo modo
    codice:
    echo '[img]/img/'.$pagina.'.jpg[/img]';
    In $pagina c'è quello che per me è una stringa uguale a quella del nome dell'immagine, ricavata facendo diventare minuscole le lettere del titolo e mettendoci i trattini.
    Adesso accade che:
    1) Se chiamo l'immagine "artù.jpg", questa non appare nella pagina ed aprendola in un'altra scheda appare il messaggio "La pagina ***/img/art.jpg non è presente";
    2) Se la chiamo "art%C3%B9.jpg" mi esce lo stesso identico messaggio di prima;
    3) Allora tengo il nome come al punto 2) e provo a scrivere il codice con urlencode($pagina) ed ancora non va;
    4) Provo a scrivere urlencode(urlencode($pagina)) e stavolta va! Apro l'immagine in un'altra scheda ed ha nome "art%25C3%25B9.jpg".

    Quindi è un po' come se, quando l'immagine reale viene presa per il confronto con la variabile, il nome viene come encodato e gli % risultano diventati %25 (e così si va da %C3%B9 a %25C3%25B9) e lo stesso risultato si ottiene encodando due volte la stringa $pagina.
    Però adesso, facendo file(url-immagine), per quanti urlencode io metta, fallisce tutto e questo è strano perché lo stesso non accadeva per i nomi degli articoli che venivano presi in modo simile, ossia con file('articoli/'.urlencode($pagina).'.txt').
    Davvero non capisco le differenze di comportamento tra queste due entità e sono convinto che quei due urlencode() non siano la via giusta!
    Che dite?
    Grazie mille

  2. #2
    Il più semplice suggerimento è di non usare caratteri accentati nei nomi di file, soprattuto su un server.
    Le specifiche di codifica riguardano i testi presenti nella pagina, ma le url, pur se corrette dal punto di vista della pagina, devono poi venire comprese dal server.
    Ed il server può usare ben altre codifiche.

    Secondo me la unica soluzione definitiva è non usare caratteri strani nei nomi dei file e, se ti servono dati testuali relativi a tali file, memorizzarli altrove (db, filesystem) in modo da rispettarne la codifica.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  3. #3
    Ecco, sì, ma non è possibile che non ci sia una soluzione che non implichi la rinuncia al problema! Poi so che si potrebbero mettere le immagini nel database, ma (a parte che non mi piace che la sorgente dell'immagine sia del tipo "img.php?id=numero") credo che sarebbe ancora un modo per aggirare il problema complicandosi, per quanto poco, la vita.
    La cosa che mi lascia interdetto è il comportamento diverso che ha lo script (che usa file()) nei confronti di due file con nome identico ed estensione diversa, come .txt e .jpg!

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.