Objective-C打印与NodeJS不同的特殊字符

时间:2018-05-08 02:36:40

标签: javascript objective-c node.js

enter image description here

Objective-C NSLog(@"\xc2\xbfhello")和javascript console.log("\xc2\xbfhello")有不同的结果,为什么?

1 个答案:

答案 0 :(得分:2)

看起来Javascript中的\x十六进制转义序列具有固定长度的两个数字,使用UTF-8编码。 因此,要获得¿,您只需要0xBF

console.log('\xbfhello');

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

\x 中的NSLog使用 UTF-8编码。

因此,如果您尝试输出¿hello,那么它将是:

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

或只是¿hello你可以使用Unicode转义序列,两者都是相同的:

NSLog(@"\u00bfhello");

console.log('\u00bfhello');

更多信息:

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

这里是Javascript中的Unicode:

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

这里是Objective-C中的Unicode:

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