ESC/POS 热敏打印机 WD8260 - Fr 特殊字符 (é、è、à) 在 PHP 中无法正确显示

问题描述 投票:0回答:1

我正在使用 PHP 和 Mike42/escpos-php 库使用 WD8260 热敏打印机。我遇到了法语特殊字符在打印输出中无法正确显示的问题。

当前设置:

  • 打印机:WD8260
  • 库:Mike42/escpos-php
  • PHP 8.2

当前代码:

$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");
php character-encoding thermal-printer escpos french
1个回答
0
投票

线路:

$printer->selectCharacterTable(2); // PC850

意味着打印机需要 CP850 编码的数据,并且考虑到乱码编码,它可能会得到 UTF-8。

使用:

mb_convert_encoding($nom_str, "cp850", "UTF-8");

可以解决此问题,但是您需要确定源数据的编码是什么,并在必要时将其代替

"UTF-8"

需要注意的是,尽管存在声称这样做的函数,但无法可靠地检测字符串编码。它是必须明确已知并与字符串数据一起跟踪的元数据。

© www.soinside.com 2019 - 2024. All rights reserved.