我有一个支持CodePage 1001阿拉伯语的Star Micronics TSP,如何使用C#将UTF-8转换为该特定代码页?
更新:我发现CodePage 864与打印机兼容,我尝试发送十六进制值,我得到了正确的字符,
myPrinter.PrintNormal(PrinterStation.Receipt, "\xFE8D");
我尝试了以下操作将字符串转换为codePage 864:
Encoding enc = Encoding.GetEncoding(864);
byte[] arr = enc.GetBytes("السلام");
在编码为{63,63,63,63,63,63}
之后我得到的字节arr值,这是值错误的,甚至字节数也是错误的,因为它是双字节字符。
答案 0 :(得分:5)
未经测试,但是:
String s = Encoding.UTF8.GetString(bytes);
Encoding enc = Encoding.GetEncoding(1001);
byte[] arr2 = enc.GetBytes(s);
当然,如果您实际上是以字符串开头,请跳过第一行,但是因为您提到了UTF-8,所以我假设是二进制文件。
显然,对于大数据量,您可以使用TextReader
/ TextWriter
(每个都使用编码) - 但同样的想法。
答案 1 :(得分:0)
我不认为原来的人仍然需要答案,但这个帖子看起来很有名,我不希望任何人浪费时间去寻找我发现的困难。所以
此答案主要依赖于Star Micronics TSP打印机提供的应用程序
关键点: - 参考“Interop.OposPOSPrinter_CCO.dll” - 打印机对象的类型应为oposposprinter.printer,并以稍微不同的方式初始化(与opos.net相比) - 字符代码作为字符串发送,并且有一个变量告诉打印机对象使用这些十进制数字作为字符代码
可以在https://bitbucket.org/loody/arabic-1001/overview
找到带有简单阿拉伯字母转换器的示例VB.net项目注意:我没有时间报道其余的字母/数字