Как напечатать символ € со звездой Micronics? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть star micronics и я внедряю SDK в свое приложение, но я не могу напечатать символ €

[mutableData appendData:[@"\x1b\x1d\x74\x04 123" dataUsingEncoding:NSMacOSRomanStringEncoding allowLossyConversion:YES]];

но печатать другой символ

также попробуйте с

 [mutableData appendData:[@"\xE2\x82\xac\r\n 123" dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion:YES]];

кто-то знает, что это за код для печати?

1 Ответ

0 голосов
/ 17 мая 2018

NSString в Objective-C внутренне кодируется как UTF-16, а символ евро имеет код 0x20AC .Итак, сначала вам нужно определить вашу строку следующим образом:

    NSString *euroSymbol1 = @"\u20AC";
    NSString *euroSymbol2 = @"€"; // same as euroSymbol1
    if ([euroSymbol1 isEqualToString:euroSymbol2])
        NSLog(@"equivalent"); // this is printed
    NSString *price = [NSString stringWithFormat:@"%@ %.2f", euroSymbol1, 123.45];
    NSLog(@"%@", price); // prints: "€ 123.45"

Обратите внимание, что если вы просто напишите «€», компилятор будет умным перекодировать вашу кодировку исходного кода в кодировку NSString, так что это тривиальночитать.

Тогда вам нужно понять, какую кодировку поддерживает ваш принтер.Если он поддерживает Unicode, вы должны сначала попробовать, потому что он определенно содержит символ евро.Обратите внимание, что все mutableData должно быть в одной и той же кодировке, поэтому, если вы добавили другие строки до этой, вам необходимо убедиться, что все они используют одинаковую кодировку (например, NSUTF8StringEncoding).

Если вам нужно использовать NSMacOSRomanStringEncoding, то символ евро может не поддерживаться ( см. Этот ответ ), хотя здесь, в таблице , вы все равно можете увидеть его под кодом 219.

...