Convert unicode string to nsstring

I have a unicode string like

{\rtf1\ansi\ansicpg1252\cocoartf1265
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 LucidaGrande;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{check\}}{\leveltext\leveltemplateid1\'01\uc0\u10003 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
\paperw11900\paperh16840\margl1440\margr1440\vieww22880\viewh16200\viewkind0
\pard\li720\fi-720\pardirnatural
\ls1\ilvl0
\f0\fs24 \cf0 {\listtext    
\f1 \uc0\u10003 
\f0     }One\
{\listtext  
\f1 \uc0\u10003 
\f0     }Two\
}

Here I have Unicode \ u10003 data that is equivalent to the "✓" characters. I used [NSString stringWithCharacters: "\ u10003" length: NSUTF16StringEncoding], which throws a compilation error. Please let me know how to convert these Unicode characters to "✓".

Regards, Boom

+4
source share
5 answers

I suppose that:

  • You are reading RTF data from a file or other external source.
  • You disassemble it yourself (without using, say, the built-in RTF AppKit analyzer).
  • , , ", AppKit ?".
  • \u… / .
  • \uc, ( , , \u…, RTF).

\u . ; , . NSString, .

NSScanner , ( \u), scanHexInt:. unsigned int.

NSScanner, , , . , RTF C , strtoul . , ( , 16), , .

unsigned int unsigned long . 0x10003 U + 10003.

unichar NSString. : unichar 0xFFFF, , ( , ).

, * CF * String , :

unsigned int codePoint = /*…*/;

unichar characters[2];
NSUInteger numCharacters = 0;
if (CFStringGetSurrogatePairForLongCharacter(codePoint, characters)) {
    numCharacters = 2;
} else {
    characters[0] = codePoint;
    numCharacters = 1;
}

stringWithCharacters:length: NSString 16- .

+6

,

NSData *dataenc = [yourtext dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *encodevalue = [[NSString alloc]initWithData:dataenc encoding:NSUTF8StringEncoding];

 NSData *data = [yourtext dataUsingEncoding:NSUTF8StringEncoding];
 NSString *decodevalue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];

+12

Uniode NSString. .

    NSData *unicodedStringData =
    [unicodedString dataUsingEncoding:NSUTF8StringEncoding];
    NSString *emojiStringValue =
    [[NSString alloc] initWithData:unicodedStringData encoding:NSNonLossyASCIIStringEncoding];

Swift 1.2

let theString1:NSString = "😃"

let unicodedData:NSData = theString1.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!

let emojiString = NSString(data: unicodedData, encoding: NSUTF8StringEncoding)

enter image description here

+5

:

NSString *myUnicodeString = @"\u10003"; 

C.
, , .

+3
NSString *strUnicodeString = "\u2714";  
NSData *unicodedStringData = [strUnicodeString dataUsingEncoding:NSUTF8StringEncoding];
NSString *emojiStringValue = [[NSString alloc] initWithData:unicodedStringData encoding:NSUTF8StringEncoding];
-1

All Articles