Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    3

    Problema charset durante creazione file vcf

    Salve a tutti!
    Se provo a creare un file vcf in questo modo:

    codice:
    $vcf = "BEGIN:VCARD".PHP_EOL;
    $vcf .= "VERSION:2.1".PHP_EOL;
    $vcf .= "N:Nicolò,Turrì,,".PHP_EOL;
    $vcf .= "FN:Nicolò Turrì".PHP_EOL;
    $vcf .= "END:VCARD".PHP_EOL;
    
    file_put_contents('prova.vcf',$vcf);
    i caratteri accentati NON vengono visualizzati correttamente.
    Se invece modifico l'ultima riga così:

    codice:
    file_put_contents('prova.vcf',utf8_decode($vcf));
    i caratteri accentati vengono visualizzati bene.

    Ora, con utf8_decode si passa da utf8 a iso-8859-1, solo che utf8 dovrebbero visualizzarsi correttamente molti più caratteri. E' evidente che mi sfugge qualcosa. Qualcuno potrebbe spiegarmi perché funziona in un modo e non in un altro?

    Grazie!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Perché evidentemente il file vcf viene creato con il charset iso-8859-1 e tu gli passi i caratteri in utf8.

    Il charset per funzionare a dovere deve essere coerente in tutti i posti in cui ti serve.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    3
    E perché viene creato con ISO-8859-1? Come faccio a specificare in modo coerente il charset all'interno di un unico documento così strutturato?

    codice:
    <!doctype html>
    
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento di prova</title>
    </head>
    
    <body>
    
    <?php
    $vcf = "BEGIN:VCARD".PHP_EOL;
    $vcf .= "VERSION:2.1".PHP_EOL;
    $vcf .= "N:Nicolò,Turrì,,".PHP_EOL;
    $vcf .= "FN:Nicolò Turrì".PHP_EOL;
    $vcf .= "END:VCARD".PHP_EOL;
    
    file_put_contents('prova.vcf',utf8_decode($vcf));
    ?>
    
    </body>
    </html>
    La gestione dei charset mi dà sempre qualche grattacapo...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    3
    Aggiungerei che le lettere accentate vengono visualizzate correttamente solo aprendo il file su Outlook, se provo ad importarlo sul mio tab android le lettere accentate vengono sostituite da ?.
    Ho provato a generare il file nei seguenti modi seguendo suggerimenti della rete:

    codice:
    // file_put_contents('prova.vcf',mb_convert_encoding($vcf,'UTF-8')); // file_put_contents('prova.vcf','\xEF\xBB\xBF'.$vcf); // file_put_contents('prova.vcf',pack('CCC',0xef,0xbb,0xbf).$vcf); // file_put_contents('prova.vcf',$vcf);
    Ma non riesco ugualmente a generare un file codificato correttamente.
    Sempre più confuso



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 © 2026 vBulletin Solutions, Inc. All rights reserved.