我想打印Bangla
文字赞"আপনিকিডাটাসংরক্ষনষনরতেতোন"从我的Android应用程序。但我每次都得到错误的结果。这是我的输出:
我的代码就在这里:
String memo = "আপনি কি ডাটা সংরক্ষন করতে চান" + "\n" +
"\n" +
"\n" +
"\n" +
"\n" +
"\n";
byte[] buffer = memo.getBytes(Charset.forName("UTF-8"));
try {
Toast.makeText(getApplicationContext(), "Starting...", Toast.LENGTH_LONG).show();
Thread.sleep(1000);
byte[] printformat = {27, 33, 01};
mmOutputStream.write(printformat);
mmOutputStream.write(buffer);
mmOutputStream.write(0x0B);
mmOutputStream.write(0x0B);
mmOutputStream.write(0x0B);
mmOutputStream.flush();
mmOutputStream.close();
mmSocket.close();
Toast.makeText(getApplicationContext(), "Completed", Toast.LENGTH_LONG).show();
mmOutputStream.close();
mmSocket.close();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),
"Excep IntentPrint", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:2)
首先请检查打印机是否支持bangla字体。如果没有,那么你可以打印另一种方式。你需要捕获具有孟加拉文本作为图像(位图)的布局,然后使用打印机位图打印api。我对阿拉伯语文本有同样的问题。我用这种技术解决了这个问题。谢谢。
答案 1 :(得分:0)
这假设打印机可以处理UTF-8的多字节序列。 同时写入打印机特定的控制字节。我认为打印机只有一个有限的特定ASCII(8位)字符集。
所以试试吧:
byte[] buffer = new byte[128];
for (int i = 0; i < 128; ++i) {
buffer[i] = (byte)(-128 + i);
}
如果找不到某些文档,则需要手动映射。
然后你需要将像"\u098F\u09AC\u0982"
这样的字符串中的字符映射到它们的字节值。
Map<Character, Byte> charsToByte;
charsToByte.put('\u088F', (byte)129); // Or such.
答案 2 :(得分:0)
如果您的热敏打印机附有文档,请搜索代码页。 热敏打印机的ascii值包含256个字符!前128个字符是固定的并且按原样打印,而最后128个字符是可编辑的,您可以通过从Unicode设置代码页来选择。如果您不能拥有代码页,则必须设置自定义字符集。 以下是我的打印机设置: **
[Name] Select character code table [Format] ASCII ESC t n Hex 1B 74 n Decimal 27 116 n [Range] 0≤ n≤ 5,16≤ n≤ 19,n=255 [Description]Selects a page n from the character code table. [Defaults]n=0 [Reference]Character Code Table
**
[Name]Select/cancel user-defined character set [Format] ASCIIESC % n Hex 1B 25 n Decimal 27 37 n [Range] 0≤ n≤ 255 [Description]Selects or cancels the user-defined character set. • When the LSB of n is 0, the user-defined character set is canceled. •When the LSB of n is 1, the user-defined character set is selected. [Note]When the user-defined character set is canceled,the internal character set is automatically selected • n is available only for the least significant bit. [Defaults] n=0 [Reference] ESC&,ESC? **
答案 3 :(得分:0)