我正在使用 PHP 和 Mike42/escpos-php 库使用 WD8260 热敏打印机。我遇到了法语特殊字符在打印输出中无法正确显示的问题。
当前设置:
当前代码:
$connector = new FilePrintConnector("php://output");
$printer = new Printer($connector);
$printer->initialize();
$printer->selectCharacterTable(2); // PC850
$printer->text("Prénom: José\n");
$printer->cut();
$printer->close();
输出 PrTénom:JosTé
$printer->getPrintConnector()->write("Pr" . chr(130) . "nom");
线路:
$printer->selectCharacterTable(2); // PC850
意味着打印机需要 CP850 编码的数据,并且考虑到乱码编码,它可能会得到 UTF-8。
使用:
mb_convert_encoding($nom_str, "cp850", "UTF-8");
可以解决此问题,但是您需要确定源数据的编码是什么,并在必要时将其代替
"UTF-8"
。
需要注意的是,尽管存在声称这样做的函数,但无法可靠地检测字符串编码。它是必须明确已知并与字符串数据一起跟踪的元数据。