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