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.