我正在开发一个移动应用程序,该应用程序从蓝牙打印机打印发票。所以我将 "esc_pos_utils" 和 "bluetooth_ Thermal_printer" 包导入到 pubspec.yaml 文件中。
应用程序可以使用一些土耳其字符(如“çÇ”和“öÖ”)从打印机打印发票,但是当我键入“ıı”、“ğĞ”、“şŞ”等其他字符时,控制台中会抛出异常;
E/flutter (31974): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument (string): Contains invalid characters.: "FAALİYET RAPORU"
E/flutter (31974): #0 _UnicodeSubsetEncoder.convert (dart:convert/ascii.dart:85:9)
E/flutter (31974): #1 Latin1Codec.encode (dart:convert/latin1.dart:40:46)
E/flutter (31974): #2 Generator._encode (package:esc_pos_utils/src/generator.dart:77:21)
E/flutter (31974): #3 Generator.text (package:esc_pos_utils/src/generator.dart:354:9)
我在 PosStyles() 小部件中尝试了
codeTable:"CP857"
和 codeTable:"CP1252"
,但没有成功。
您以前遇到过这种情况吗?
如果您以前遇到过并解决了,您是如何解决的。
bytes += generator.setGlobalCodeTable("CP866");
bytes.addAll(generator.row([
PosColumn(
textEncoded: await getEncoded('Автоматизация ресторанов'),
width: 12,
styles: const PosStyles(align: PosAlign.center),
)
]));
Future<Uint8List> getEncoded(String text) async {
final encoded = await CharsetConverter.encode("CP866", text);
return encoded;
}
字符集转换器:^2.1.2
使用此包创建您自己的代码表