如何将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项目

注意:我没有时间报道其余的字母/数字