Objective-C печатает специальный символ, отличный от NodeJS - PullRequest
0 голосов
/ 08 мая 2018

enter image description here

Objective-C NSLog(@"\xc2\xbfhello") и javascript console.log("\xc2\xbfhello") имеет другой результат, почему?

1 Ответ

0 голосов
/ 08 мая 2018

Похоже, что шестнадцатеричная escape-последовательность \x в Javascript имеет фиксированную длину две цифры, которые не используют кодировку UTF-8. Таким образом, чтобы получить ¿ вам нужно всего лишь 0xBF:

console.log('\xbfhello');

или String.fromCharCode(0x00bf) или String.fromCharCode(0x000000bf)

\x в NSLog использует кодировку UTF-8.

Так что, если вы пытаетесь вывести ¿hello, это будет:

NSLog(@"\xc3\x82\xc2\xbfhello");

или просто ¿hello, вы можете использовать escape-последовательность Unicode, которая будет одинаковой в обоих:

NSLog(@"\u00bfhello");

и

console.log('\u00bfhello');

Подробнее здесь:

https://www.fileformat.info/info/unicode/char/00bf/index.htm

Здесь для Unicode в Javascript:

https://dmitripavlutin.com/what-every-javascript-developer-should-know-about-unicode/

Здесь для Unicode в Objective-C:

https://www.objc.io/issues/9-strings/unicode/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...