4

我有一个支持 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("السلام");

我在编码后得到的字节 arr 值{63,63,63,63,63,63}是错误的,甚至字节数也是错误的,因为它是一个双字节字符。

4

2 回答 2

5

未经测试,但是:

String s = Encoding.UTF8.GetString(bytes);
Encoding enc = Encoding.GetEncoding(1001);
byte[] arr2 = enc.GetBytes(s);

当然,如果您实际上以字符串开头,请跳过第一行,但由于您提到 UTF-8,我假设是二进制的。

显然,对于大数据量,您可能会使用TextReader/ TextWriter(每个都带有编码) - 但同样的想法。

于 2011-07-24T18:06:37.613 回答
0

我不认为最初提出问题的人仍然需要答案,但是这个线程似乎很有名,我不希望任何人浪费他的时间来找到我发现的困难的方法..so

这个答案主要依赖于 Star Micronics TSP 打印机提供的应用程序

关键点: - 参考“Interop.OposPOSPrinter_CCO.dll” - 打印机对象的类型应为oposposprinter.printer,并以稍微不同的方式初始化(​​与opos.net相比) - 字符代码作为字符串发送,并且有一个变量告诉打印机对象使用这些十进制数字作为字符代码

可以在https://bitbucket.org/loody/arabic-1001/overview找到带有简单阿拉伯字母转换器的示例 VB.net 项目

注意:我没有时间涵盖其余的字母/数字

于 2012-10-27T00:01:20.657 回答