如何将UTF-8阿拉伯字母转换为CodePage 1001?

时间:2011-07-24 17:41:46

标签: c# .net encoding character-encoding codepages

我有一个支持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值,这是值错误的,甚至字节数也是错误的,因为它是双字节字符。

2 个答案:

答案 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项目

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