2013-03-29 9 views
3

我有一臺Star Micronics SM-S220i藍牙打印機。我正在使用它從我的iPad應用程序打印收據。雖然我不能獲得像åäö這樣的UTF-8字符。如何使用UTF-8字符串打印NSData

這裏是我的代碼:

NSMutableData *commands = [[NSMutableData alloc] init]; 

[commands appendData:[@"\nåäö\n" dataUsingEncoding:NSWindowsCP1252StringEncoding]]; 

當使用這種編碼它在DOS字符打印AAO。

+1

我知道這是一個明顯的問題,但你嘗試過使用的不是Windows一個NSUTF8StringEncoding? –

+0

是的,已經試過了。它將åäö轉換成├Ñ├ñ├║ –

+0

「它在DOS字符中打印åäö」是什麼意思?它是否打印「å」或其他字符?你有關於使用的代碼頁的打印機技術文檔嗎? –

回答

6

如果「A」轉換成CP1292打印爲「σ」,則打印機可能希望在CP437編碼的數據。 CP437可以作爲kCFStringEncodingDOSLatinUS可轉換爲NSString的編碼:

NSMutableData *commands = [[NSMutableData alloc] init]; 
NSStringEncoding cp437 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSLatinUS); 
[commands appendData:[@"\nåäö\n" dataUsingEncoding:cp437]]; 
+0

精彩!!那就是訣竅。謝謝 –

2

嘗試使用不同的編碼,例如:

[commands appendData:[@"\nåäö\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
+0

嘗試過,只是將åäö轉換爲├Ñ├ñ├║ –

+0

通過「eg」我建議你嘗試所有可用的(或至少是合理的)編碼。比如'NSUnicodeStringEncoding',一開始。它確實看起來像編碼/解碼不匹配。 – Wildaker