Ich arbeite an einer SMS-Anwendung für das iPhone. Ich muss feststellen, ob der Benutzer Unicode-Zeichen innerhalb des NSString eingegeben hat, den er senden möchte.
Ich muss das tun, weil Unicode-Zeichen mehr Platz in der Nachricht benötigen, und auch, weil ich sie in ihre hexadezimalen Äquivalente konvertieren muss.
Also meine Frage ist, wie erkenne ich das Vorhandensein eines Unicode-Zeichens in einem NSString (die ich von einem UITextView gelesen habe). Wie konvertiere ich diese Zeichen dann in ihre hexadezimalen UCS-2-Entsprechungen?
z. B. 7 = 7E41, 体 = 4F53, 中 = 4E2D, 文 = 6587
Um nach nur ASCII-Zeichen (oder einer anderen Kodierung Ihrer Wahl) zu suchen, verwenden Sie:
[myString canBeConvertedToEncoding: NSASCIIStringEncoding];
Es wird NO zurückgegeben, wenn die Zeichenfolge nicht-ASCII-Zeichen enthält. Sie können die Zeichenfolge dann in UCS-2-Daten konvertieren mit:
[myString dataUsingEncoding: NSUTF16BigEndianStringEncoding];
oder NSUTF16LittleEndianStringEncoding abhängig von Ihrer Plattform. Es gibt geringfügige Unterschiede zwischen UCS-2 und UTF-16. UTF-16 hat UCS-2 abgelöst. Sie können über die Unterschiede hier nachlesen:
Ich konnte das nicht zur Arbeit bringen.
Ich habe eine HTML-Zeichenfolge mit
NON BREAKING SPACE
Ich habe versucht, drei Arten von encode / decode
%Vor%keiner von diesen hat funktioniert. Sie schienen zu arbeiten, als ob ich NSLog die Zeichenfolge es sieht gut aus
%Vor%Welcher Ausgang
%Vor% aber ich habe diese zufällig in einem NSArray gespeichert und ich habe zufällig [stringArray description]
aufgerufen und die ganze Unicode war immer noch da drin
So etwas in NSLog verbirgt
, aber es zeigt sich in NSArray Beschreibung, so dass Sie denken, Sie haben das Unicode entfernt, wenn Sie nicht haben.
Wird eine andere Methode versuchen, die die Zeichen ersetzt.