使用 NodeJS 将汉字打印到 EPSON TM T88V 的正确方法

Proper way to print chinese characters to an EPSON TM T88V using NodeJS

我正在尝试使用带有 node-thermal-printer 模块的 NodeJS 将中文字符打印到热敏收据打印机。

printer1.setCharacterSet('CHINA');

  var str = "   כ所有人生而自由,在尊嚴和權利上一律平等";
  var enc = iconv.encode(str, 'CP936');
  console.log (enc);
  var enc1 = iconv.encode(enc, 'ISO-8859-1');
  console.log (enc1);

  printer1.println(enc1);
  printer1.partialCut();
  printer1.execute()
  .then(() => {
    console.log('Printing...');
    printer1.clear();
  })
  .catch((err) => {
    console.log(err);
  })

我读过这个答案Printing simplified Chinese characters on Epson TM-T88IVM 解释说字符串首先必须在 CP936 中编码,然后在 ISO-8859-1 中表示才能正确打印。

我现在得到的只是问号。 字符集或代码页设置不正确? 我是否对字符串进行了不正确的编码?

如果有人能指导我,我将不胜感激。

你说的文章是使用另一个APIOPOS时的资料,里面的参考文章好像是C#的常识。
它们在使用 node-thermal-printer 时不适用。

在node-thermal-printer的例子中,好像是简单设置字符集后打印出来的字符串
node-thermal-printer/examples/charsets.js

printer.println("Č芚ĆćĐđŽž");
printer.drawLine();
printer.setCharacterSet('PC855_CYRILLIC');
printer.println("Все люди рождаются свободными и равными в своем достоинстве и правах.");
printer.drawLine();
printer.setCharacterSet('JAPAN');
printer.println("すべての人々は自由に生まれ、尊厳と権利において平等です");
printer.drawLine();
printer.setCharacterSet('CHINA');
printer.println("所有人生而自由,在尊嚴和權利上一律平等");
printer.drawLine();
printer.setCharacterSet('PC862_HEBREW');
printer.println("כל בני האדם נולדים חופשיים ושווים בכבוד ובזכויות.");

顺便说一句,为了打印 Chinese/Japanese/Korean 等东亚字符,必须使用包含这些字体的打印机型号。
确保您使用的是可以打印它们的模型。

并且您可能需要将设置工具设置为默认打印中文。
TM-T88V Utility

如果仍然无法打印,为什么不向 node-thermal-printer 存储库提交问题?