如何在vCards中编码ä/ö/ü

时间:2014-01-21 09:01:34

标签: php unicode vcard

我遇到了一个问题,而且,我不知道如何解决它。谷歌已经被我折磨了。

所以我需要在PHP中编写一个能够创建QRCodes的脚本。主要用于vCards。该脚本目前工作正常(几乎),即时使用此库:http://phpqrcode.sourceforge.net/

创建卡的代码非常简单:

<?php
error_reporting(E_ALL);
ini_set("display_errors", true);

include "phpqrcode/qrlib.php";
define('CRLF', "\r\n");

$text = "BEGIN:VCARD".CRLF;
$text .= "VERSION:4.0".CRLF;

foreach($_POST as $k => $p) {
    print_r($k);
    echo ":";
    print_r($p);
    echo "<br>";
    $text .= $k.":".utf8_encode($p).CRLF;
}

$text .= "END:VCARD";
htmlentities($text);
str_replace(",", "\\,", $text);

QRcode::png($text, "/srv/www/htdocs/xxx/QRCode/files/qrcode.png", QR_ECLEVEL_M, 4, 2, true);

echo '<img src="files/qrcode.png">';

因此,QRcode正确打印并保存到我指定的文件中,这不是问题。 $text的输出如下:

BEGIN:VCARD
VERSION:4.0
FN:Mathias Rokar
TEL:015158874391
EMAIL:mathiasrokar@gmx.de
URL:mathias-rokar.de
ADR;HOME:Ährenstraße 6;München;68475;DE
END:VCARD

所有内容都可以很好地编码到.php文件中,但是如果我扫描QRcode,üßÄ就会变得无意义。 RFC 6350说版本3.0以后的每个vCard都使用utf-8,因此不存在任何问题...... utf8-encodehtmlentities()都不起作用。有人为此找到了解决方案吗?

E:这只是没有安全检查的测试代码。请你关心它,它将在最终版本中完成。

0 个答案:

没有答案