iPhone does not read accents correctly in QR CODE that works normally on Android

0

I'm generating a QR code from a VCARD using the PHP QR Code ( link ) and works perfectly (taking a problem saving SVG which I will research better first.)

Anyway, at the moment the problem is that the same QR code works correctly on Android and does not work correctly on the iPhone.

The problem is in the accent. Strange characters are displayed in place of ç, ã, etc ...

Any ideas? I already researched and did not find the solution.

<?php 

include('phpqrcode/qrlib.php'); 

// how to build raw content - QRCode with detailed Business Card (VCard) 
$tempDir = ""; 

// here our data 
$name         = 'João Carlos da Silva'; 
$sortName     = 'da Silva;João Carlos'; 
$phone        = '+55 (89) 2345-6789'; 
$phonePrivate = '+55 (94) 4521-3989'; 
$phoneCell    = '+55 (66) 1234-5678'; 
$orgName      = 'GH Construtora'; 

$email        = '[email protected]'; 

// if not used - leave blank! 
$addressLabel     = 'Escritório'; 
$addressPobox     = ''; 
$addressExt       = '2º andar'; 
$addressStreet    = 'Av. das Nações, 200'; 
$addressTown      = 'Cidade'; 
$addressRegion    = 'SP';
$addressPostCode  = '18.902-100'; 
$addressCountry   = 'Brasil'; 

// we building raw data 
$codeContents  = 'BEGIN:VCARD'."\n"; 
$codeContents .= 'VERSION:2.1'."\n"; 
$codeContents .= 'N:'.$sortName."\n"; 
$codeContents .= 'FN:'.$name."\n"; 
$codeContents .= 'ORG:'.$orgName."\n"; 

$codeContents .= 'TEL;WORK;VOICE:'.$phone."\n"; 
$codeContents .= 'TEL;HOME;VOICE:'.$phonePrivate."\n"; 
$codeContents .= 'TEL;TYPE=cell:'.$phoneCell."\n"; 

$codeContents .= 'ADR;TYPE=work;'. 
    'LABEL="'.$addressLabel.'":' 
    .$addressPobox.';' 
    .$addressExt.';' 
    .$addressStreet.';' 
    .$addressTown.';' 
    .$addressPostCode.';' 
    .$addressCountry 
."\n"; 

$codeContents .= 'EMAIL:'.$email."\n"; 

$codeContents .= 'END:VCARD'; 

// generating 
QRcode::png($codeContents, $tempDir.'026.png', QR_ECLEVEL_L, 7); 

// displaying 
echo '<img src="026.png" />';

    
asked by anonymous 07.11.2018 / 20:37

1 answer

0

I solved the question. Although it seems to be an encoding problem, it was not because everything was already UTF-8. The problem is actually simpler, this code was taken from the PHP QR Code sample page, however it points to the version of VCARD as 2.1 as in the line below. I simply switched to 3.0 and solved my problem on both iOS and Android.

$codeContents .= 'VERSION:2.1'."\n";

Switch to:

$codeContents .= 'VERSION:3.0'."\n";
    
08.11.2018 / 04:55