Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Delphi10.1安卓应用程序。如何将单字节文本作为JString传递。_Android_Delphi_Unicode - Fatal编程技术网

Android Delphi10.1安卓应用程序。如何将单字节文本作为JString传递。

Android Delphi10.1安卓应用程序。如何将单字节文本作为JString传递。,android,delphi,unicode,Android,Delphi,Unicode,我的应用程序在Zebra EM220移动打印机上打印。我的国家字符编码在代码页CP852(支持打印机)中,但Delphi显然是Unicode 打印机库有一个打印文本的方法,该方法将JString作为文本参数传递。不幸的是,StringToJString的使用效果不好,因为在每个my national字符之前都会打印一个额外的“?”或“t”。看起来打印机需要一个单字节编码的文本,在两个字节时,它不知道该做什么 现在的问题是:如何将Unicode字符串编码为单字节字符串I CP852代码页,并将其作

我的应用程序在Zebra EM220移动打印机上打印。我的国家字符编码在代码页CP852(支持打印机)中,但Delphi显然是Unicode

打印机库有一个打印文本的方法,该方法将JString作为文本参数传递。不幸的是,StringToJString的使用效果不好,因为在每个my national字符之前都会打印一个额外的“?”或“t”。看起来打印机需要一个单字节编码的文本,在两个字节时,它不知道该做什么

现在的问题是:如何将Unicode字符串编码为单字节字符串I CP852代码页,并将其作为JString参数传递

如何将Unicode字符串编码为单字节字符串I CP852代码页,并将其作为JString参数传递

可以使用Delphi的codepaged AnsiStrings功能,或Delphi RTL的
LocaleCharsFromUnicode()
功能,甚至是Java通过JNI的方法,将Unicode数据转换为特定的单字节字符集

但是不能在
JString
参数中传递单字节数据,也不应该尝试这样做

JString
是Delphi的包装器,它是一个UTF-16编码字符串,与is一样

如果打印机库确实将
JString
作为输入,则
StringToJString()
将正常工作。它只需将UTF-16数据原样从Delphi
UnicodeString
复制到Java
String

在将数据发送到实际打印机时,库负责将Java
字符串
数据从UTF-16转换为CP852(或任何形式)

如果您在向库发送特定字符时遇到问题,这与其他内容有关,例如发送CP852中不存在的Unicode字符。在Java中使用Unicode文本与库时,如果您在Delphi中使用Unicode文本与库时遇到任何问题,都应该存在,因为无论哪种方式,输入都是相同的。

请提供一个演示Delphi中问题的示例。如果您有处理Unicode文本的Java代码,而Delphi没有,请也显示该代码。