iOS Localization: Unicode Character Escape Sequences, Which Have the Form '\Uxxxx' Does Not Work

iOS Localization: Unicode character escape sequences, which have the form '\uxxxx' does not work

NSString literals and strings-files use different escaping rules.

NSString literals use the same escape sequences as "normal" C-strings, in particular
the "universal character names" defined in the C99 standard:

\unnnn      - the character whose four-digit short identifier is nnnn
\Unnnnnnnn - the character whose eight-digit short identifier is nnnnnnnn

Example:

NSString *string = @"Espa\u00F1ol - \U0001F600"; // Español - br>

Strings-files, on the other hand, use \Unnnn to denote a UTF-16 character,
and "UTF-16 surrogate pairs" for characters > U+FFFF:

"spanish-key" = "Espa\U00f1ol - \Ud83d\Ude00";

(This is the escaping used in "old style property lists", which you can see when printing
the description of an `NSDictionary.)

This (hopefully) answers your question

When to use "\Uxxxx" and "\uxxxx"?

But: As also noted by @gnasher729 in his answer, there is no need to use Unicode
escape sequences at all. You can simply insert the Unicode characters itself,
both in NSString literals and in strings-files:

NSString *string = @"Español - ;

"spanish-key" = "Español - ;

Swift use unicode character in localization.strings

You have to follow localization.strings's unicode format, e.g.:

"your-key" = "\UF071";

Swift use unicode character in localization.strings

You have to follow localization.strings's unicode format, e.g.:

"your-key" = "\UF071";


Related Topics



Leave a reply



Submit