PHP QR Code не будет отображать символы UTF-8

Я генерирую QR-код vCard, используя PHP QR-код (http://phpqrcode.sourceforge.net). Это работает, но не с бразильскими португальскими символами. Я не могу найти, как заставить UTF-8 к этому.

Проблема в том, что iOS не распознает символы, проверьте скриншоты ниже (iOS и Android).

<?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" />';

Android
IOS

0

Решение

Я не думаю, что QR-код делает что-то не так. Приложение для смартфона читает, что бы ни содержал QR-код.

Android-приложение впоследствии может применить немного больше логики, включая некоторое обнаружение кодировки, но содержание QRs остается тем же.

Итак, попробуйте закодировать свои данные ДО создания QR-кода:

$codeContents .= 'FN:'.utf8_encode($name)."\n";
0

Другие решения

Решение: QR Code устанавливал версию VCARD на 2.1. Я перешел на 3.0, и теперь он отлично работает с iOS и Android. Это не было проблемой кодировки.

$codeContents .= 'VERSION:3.0'."\n";
0

По вопросам рекламы [email protected]